<?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>127330</bug_id>
          
          <creation_ts>2014-01-20 19:32:09 -0800</creation_ts>
          <short_desc>ScriptExecutionContext tasks, cross-thread data and copiers should use std::unique_ptr</short_desc>
          <delta_ts>2015-04-20 10:04:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970139</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-20 19:32:09 -0800</bug_when>
    <thetext>I have done this on my feature branch since it made some things easier. I&apos;ll post the patch tomorrow after I rebase it to ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970404</commentid>
    <comment_count>1</comment_count>
      <attachid>221781</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-21 13:34:55 -0800</bug_when>
    <thetext>Created attachment 221781
WIP - needs rebase, CrossThreadTask broke</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970452</commentid>
    <comment_count>2</comment_count>
      <attachid>221797</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-21 15:44:16 -0800</bug_when>
    <thetext>Created attachment 221797
mostly done, one fail yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970453</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-21 15:49:13 -0800</bug_when>
    <thetext>Currently stuck on what to do about WorkerThreadableWebSocketChannel::Peer. The lifetime management is pretty hacky and relied on PassOwnPtr destructors, and blindly converting to unique_ptr won&apos;t work because the copy constructor is being called somehow.

I&apos;d appreciate any help. The relevant error:


/Users/bburg/repos/webkit_/OpenSource/Source/WebCore/dom/CrossThreadTask.h
/Users/bburg/repos/webkit_/OpenSource/Source/WebCore/dom/CrossThreadTask.h:341:37: Call to implicitly-deleted copy constructor of &apos;std::unique_ptr&lt;Peer&gt;&apos;
/Users/bburg/repos/webkit_/OpenSource/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:38:10: In file included from /Users/bburg/repos/webkit_/OpenSource/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:38:
/Users/bburg/repos/webkit_/OpenSource/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:372:45: In instantiation of function template specialization &apos;WebCore::createCallbackTask&lt;std::__1::unique_ptr&lt;WebCore::WorkerThreadableWebSocketChannel::Peer, std::__1::default_delete&lt;WebCore::WorkerThreadableWebSocketChannel::Peer&gt; &gt;, std::__1::unique_ptr&lt;WebCore::WorkerThreadableWebSocketChannel::Peer, std::__1::default_delete&lt;WebCore::WorkerThreadableWebSocketChannel::Peer&gt; &gt; &gt;&apos; requested here
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/memory:2572:31: Copy constructor is implicitly deleted because &apos;unique_ptr&lt;WebCore::WorkerThreadableWebSocketChannel::Peer, std::__1::default_delete&lt;WebCore::WorkerThreadableWebSocketChannel::Peer&gt; &gt;&apos; has a user-declared move constructor
/Users/bburg/repos/webkit_/OpenSource/Source/WebCore/platform/CrossThreadCopier.h:116:59: Passing argument to parameter &apos;uniquePtr&apos; here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995472</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-28 15:53:53 -0700</bug_when>
    <thetext>unassigning, I think many of these have been fixed already in the meantime by :zdobersek</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086805</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-20 10:04:36 -0700</bug_when>
    <thetext>Lets not keep this bug open because, as Brian said, many of these are done already. We will come back to any of these that remain as we hit the final stretch of getting rid of OwnPtr.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221781</attachid>
            <date>2014-01-21 13:34:55 -0800</date>
            <delta_ts>2014-01-21 15:44:15 -0800</delta_ts>
            <desc>WIP - needs rebase, CrossThreadTask broke</desc>
            <filename>bug-127330-20140121133454.patch</filename>
            <type>text/plain</type>
            <size>126622</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDg2OWM4NWYwZDcwYjNjOTZlYTZhODA3NTU1
OWZkYzIzNGZiZWVjMTguLjVmYzE1YmJlNDNjZjM3NjRiODYxNzcxZTE0OTRhZjRkOGRhYzY4OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CkBAIC01Myw4ICs1Myw2IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODYsMTEgKzg0LDYgQEAgRGF0YWJhc2U6OkRhdGFi
YXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LAog
CiBjbGFzcyBEZXJlZkNvbnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERlcmVmQ29udGV4dFRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERlcmVmQ29udGV4dFRhc2soY29udGV4dCkp
OwotICAgIH0KLQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0ID09IG1fY29udGV4dCk7CkBAIC05OSwxMiArOTIsMTIgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLXBy
aXZhdGU6CiAgICAgRGVyZWZDb250ZXh0VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ+IGNvbnRleHQpCiAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgewogICAg
IH0KLSAgICAKKworcHJpdmF0ZToKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9jb250ZXh0OwogfTsKIApAQCAtMTE2LDcgKzEwOSw3IEBAIERhdGFiYXNlOjp+RGF0YWJhc2Uo
KQogICAgICAgICAvLyBEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUuCiAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuZ2V0KCk7CiAgICAgICAgIAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LnJlbGVhc2UoKSkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhzdGQ6Om1ha2VfdW5pcXVlPERlcmVmQ29udGV4dFRhc2s+KG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5yZWxlYXNlKCkpKTsKICAgICB9CiB9CiAKQEAgLTIwNSwyOCArMTk4LDIzIEBAIHZvaWQg
RGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFj
az4gY2FsbGJhY2ssIFBhc3NSCiAKIGNsYXNzIERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrKHRyYW5zYWN0aW9uKSk7Ci0gICAg
fQotCiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KQogICAgIHsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+cGVyZm9ybVBlbmRpbmdDYWxsYmFjaygp
OwogICAgIH0KIAotcHJpdmF0ZToKICAgICBEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzayhQYXNz
UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKICAgICAgICAgOiBtX3RyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRyPFNR
TFRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogfTsKIAogdm9pZCBEYXRhYmFzZTo6c2NoZWR1
bGVUcmFuc2FjdGlvbkNhbGxiYWNrKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKERlbGl2ZXJQZW5kaW5nQ2FsbGJh
Y2tUYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2s+
KHRyYW5zYWN0aW9uKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0
VGFibGVOYW1lcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNGVlZDZlMjAwMWQ5NGRhOWYzNWU3NjY3ZTBh
MDk4ZjI0YWRkNTk2Yi4uNWMzNTlhOGY5YmYzMjViY2VmMmJiMzczNzlkNzUyMmY1NTVkMTA0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VNYW5hZ2VyLmNwcApAQCAtMTE5LDIzICsxMTksMTggQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogCiBjbGFzcyBEYXRhYmFzZUNyZWF0aW9u
Q2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxEYXRhYmFz
ZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrKGRhdGFiYXNlLCBjcmVhdGlvbkNh
bGxiYWNrKSk7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKICAgICAgICAgbV9jcmVhdGlvbkNhbGxiYWNrLT5oYW5k
bGVFdmVudChtX2RhdGFiYXNlLmdldCgpKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgRGF0YWJh
c2VDcmVhdGlvbkNhbGxiYWNrVGFzayhQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgUGFz
c1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFjaykKICAgICAgICAgOiBtX2RhdGFiYXNl
KGRhdGFiYXNlKQogICAgICAgICAsIG1fY3JlYXRpb25DYWxsYmFjayhjYWxsYmFjaykKICAgICB7
CiAgICAgfQogCitwcml2YXRlOgogICAgIFJlZlB0cjxEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAg
ICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gbV9jcmVhdGlvbkNhbGxiYWNrOwogfTsKQEAgLTMy
OSw3ICszMjQsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5E
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZQogCiAgICAgaWYgKGJhY2tlbmQt
PmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewogICAgICAgICBMT0coU3RvcmFn
ZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJh
c2UgJXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKLSAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3Jl
YXRlKGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7CisgICAgICAgIGRhdGFiYXNlLT5tX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VD
cmVhdGlvbkNhbGxiYWNrVGFzaz4oZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKICAgICB9
CiAKICAgICBBU1NFUlQoZGF0YWJhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggYzE4NGEzNzM4MDUz
ODI0ZTI3N2E1MDA4YmVhNzRhNWM0M2RhMzY3MC4uMmY5OWQ2MmQxMjNkNGMxZWUyMmY3MmNmOGU1
ODAyYzdhMWJmODc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKICAgICAgICAgICAgIGNhbGxiYWNrID0gbV9jYWxsYmFjay5yZWxlYXNlKCku
bGVha1JlZigpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKFNhZmVSZWxl
YXNlVGFzazo6Y3JlYXRlKGNhbGxiYWNrKSk7CisgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKHN0
ZDo6bWFrZV91bmlxdWU8U2FmZVJlbGVhc2VUYXNrPihjYWxsYmFjaykpOwogICAgIH0KIAogICAg
IFBhc3NSZWZQdHI8VD4gdW53cmFwKCkKQEAgLTkwLDExICs5MCw2IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgY2xhc3MgU2FmZVJlbGVhc2VUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8U2Fm
ZVJlbGVhc2VUYXNrPiBjcmVhdGUoVCogY2FsbGJhY2tUb1JlbGVhc2UpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2FmZVJlbGVhc2VUYXNrKGNhbGxiYWNrVG9S
ZWxlYXNlKSk7Ci0gICAgICAgIH0KLQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKG1fY2FsbGJhY2tUb1JlbGVhc2UgJiYgY29udGV4dCAmJiBjb250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSk7CkBAIC0xMDQsMTIgKzk5LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBw
cml2YXRlOgogICAgICAgICBleHBsaWNpdCBTYWZlUmVsZWFzZVRhc2soVCogY2FsbGJhY2tUb1Jl
bGVhc2UpCiAgICAgICAgICAgICA6IG1fY2FsbGJhY2tUb1JlbGVhc2UoY2FsbGJhY2tUb1JlbGVh
c2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgcHJpdmF0ZToKICAgICAgICAgVCogbV9j
YWxsYmFja1RvUmVsZWFzZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCmluZGV4IDE1YjZkM2M5M2MxZWRhMjBiYTVhOTA2
OGQ0YjZmYTdmNDQxMTNlMjYuLmM3YWY2NGM0ZTU0ZTU1Yjg1NDAyZDAxMDY2M2Y4MTZjZmY3YTRj
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuY3BwCkBAIC0xNzAsOSArMTcwLDkgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWUKICAgICAg
ICAgcHJvY2Vzc1BlbmRpbmdUYXNrcygpOwogfQogCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0
b3I8Y2hhcj4+IGJpbmFyeURhdGEpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxj
aGFyPj4gYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRSZWNlaXZlQmluYXJ5RGF0YUNhbGxiYWNrLCB0aGlzLCBiaW5hcnlEYXRh
KSk7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVj
ZWl2ZUJpbmFyeURhdGFDYWxsYmFjaywgdGhpcywgc3RkOjptb3ZlKGJpbmFyeURhdGEpKSk7CiAg
ICAgaWYgKCFtX3N1c3BlbmRlZCkKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdUYXNrcygpOwogfQpA
QCAtMjMyLDkgKzIzMiw5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpwcm9jZXNzUGVuZGluZ1Rhc2tzKCkKICAgICAgICAgbV9jb250ZXh0LT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrc0NhbGxiYWNrLCB0aGlzKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgVmVjdG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
Pj4gdGFza3M7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPj4gdGFza3M7CiAgICAgdGFza3Muc3dhcChtX3BlbmRpbmdUYXNrcyk7Ci0gICAg
Zm9yIChWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+Pjo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHRhc2tzLmJlZ2luKCk7IGl0ZXIgIT0gdGFza3MuZW5kKCk7ICsraXRl
cikKKyAgICBmb3IgKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0
YXNrcy5lbmQoKTsgKytpdGVyKQogICAgICAgICAoKml0ZXIpLT5wZXJmb3JtVGFzaygwKTsKIH0K
IApAQCAtMjUyLDExICsyNTIsMTEgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXgKICAgICAgICAg
d3JhcHBlci0+bV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi12b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFy
eURhdGFDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlciwgUGFzc093
blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlciwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFy
Pj4gYmluYXJ5RGF0YSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsK
ICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCi0gICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5k
aWRSZWNlaXZlQmluYXJ5RGF0YShiaW5hcnlEYXRhKTsKKyAgICAgICAgd3JhcHBlci0+bV9jbGll
bnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKHN0ZDo6bW92ZShiaW5hcnlEYXRhKSk7CiB9CiAKIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudENhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3cmFwcGVyLCB1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IDI5ZjU0OTUwYThiY2EzNGFhYzBkNWJkNGU3
MDRlZTE4NTQ0NjAxZGEuLmQ3OTg1ZTRjOWU3N2EwYzAxNTcyMTMxNTA3YWNjMDQ5ZGFjNjgwZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgK
QEAgLTM4LDggKzM4LDYgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC04MCw3ICs3OCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ29ubmVjdCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCaW5hcnlE
YXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+Pik7CisgICAgdm9pZCBkaWRSZWNlaXZlQmluYXJ5
RGF0YShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGNoYXI+Pik7CiAgICAgdm9pZCBkaWRVcGRhdGVC
dWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KTsKICAgICB2b2lkIGRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogICAgIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9u
ZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKQEAgLTk2LDcgKzk0LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2
b2lkIGRpZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGFD
YWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPj4pOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhQ2FsbGJhY2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4pOwogICAgIHN0YXRpYyB2b2lk
IGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgdW5z
aWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCk7CiAgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRDbG9z
aW5nSGFuZHNoYWtlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPik7CiAgICAgc3RhdGljIHZv
aWQgZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCB1bnNpZ25lZCBsb25nIHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGlvblN0YXR1cywgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5n
JiByZWFzb24pOwpAQCAtMTE0LDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgbV9zZW5kUmVxdWVzdFJlc3VsdDsKICAgICB1bnNp
Z25lZCBsb25nIG1fYnVmZmVyZWRBbW91bnQ7CiAgICAgYm9vbCBtX3N1c3BlbmRlZDsKLSAgICBW
ZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiBtX3BlbmRpbmdUYXNr
czsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+PiBtX3BlbmRpbmdUYXNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggNzJi
MTkyYWYzNDNlYjU5NmZhMDlhNzVlOGEwNWQ0Y2JiYmFkNWMxMy4uNTc3ZjljMjM5ZmE5MDhiOTc2
NTg0NmRkNWFhY2UwMGVhNTI1ZmI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU3LDggKzU3LDYgQEAKICNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgpAQCAtNTE2LDcgKzUxNCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1zZykKICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKG1zZywgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsK
IH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVj
dG9yPGNoYXI+PiBiaW5hcnlEYXRhKQordm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlE
YXRhKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCiB7CiAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUJpbmFyeURhdGEoKSAlbHUgYnl0ZSBi
aW5hcnkgbWVzc2FnZSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGJpbmFyeURh
dGEtPnNpemUoKSkpOwogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggNjg5YzJlZjJkYjA5ZWQ3
OTI2MWQzZGY4Mzk4NjYxMWNhNTRkOGZjZC4uYmU2YzZmNWI3Y2U3ZjkzZTUyNWQyZTdhOTM5MTcw
Zjc3NDE1MTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPj4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQmluYXJ5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGNoYXI+PikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZm
ZXJlZEFtb3VudCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hh
bmRzaGFrZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGM0MDNmODc5MTI2MDRkZjI4NGVj
MTliNGY5ZDczYzIyYjBiZDM1ODAuLjU3MjYwNzI4OTAyYWJkNzg0ZDlkOWMxYWVkOGI5ZmI1MDli
Mzc5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU3NSw3ICs1NzUsNyBAQCBib29sIFdlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUg
bWVtYmVyIHZhcmlhYmxlcyBhcmUgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGJlZm9yZQogICAgICAg
ICAgICAgLy8gdGhlIGhhbmRsZXIgaXMgaW52b2tlZC4KICAgICAgICAgICAgIC8vIFZlY3Rvcjxj
aGFyPjo6c3dhcCgpIGlzIHVzZWQgaGVyZSB0byBjbGVhciBtX2NvbnRpbnVvdXNGcmFtZURhdGEu
Ci0gICAgICAgICAgICBPd25QdHI8VmVjdG9yPGNoYXI+PiBjb250aW51b3VzRnJhbWVEYXRhID0g
YWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPik7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPGNoYXI+PiBjb250aW51b3VzRnJhbWVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8Y2hhcj4+KCk7CiAgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuc3dhcCgqY29u
dGludW91c0ZyYW1lRGF0YSk7CiAgICAgICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZh
bHNlOwogICAgICAgICAgICAgaWYgKG1fY29udGludW91c0ZyYW1lT3BDb2RlID09IFdlYlNvY2tl
dEZyYW1lOjpPcENvZGVUZXh0KSB7CkBAIC01ODksNyArNTg5LDcgQEAgYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlQmluYXJ5KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5
RGF0YShjb250aW51b3VzRnJhbWVEYXRhLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKHN0ZDo6bW92ZShjb250aW51b3VzRnJhbWVEYXRh
KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKQEAgLTYxNiwxMCArNjE2LDEwIEBAIGJv
b2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIAogICAgIGNhc2UgV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZUJpbmFyeToKICAgICAgICAgaWYgKGZyYW1lLmZpbmFsKSB7Ci0gICAgICAg
ICAgICBPd25QdHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlEYXRhID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxjaGFyPihmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hh
cj4+KGZyYW1lLnBheWxvYWRMZW5ndGgpOwogICAgICAgICAgICAgbWVtY3B5KGJpbmFyeURhdGEt
PmRhdGEoKSwgZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7CiAgICAgICAgICAg
ICBza2lwQnVmZmVyKGZyYW1lRW5kIC0gbV9idWZmZXIuZGF0YSgpKTsKLSAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShiaW5hcnlEYXRhLnJlbGVhc2UoKSk7CisgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoc3RkOjptb3ZlKGJpbmFyeURh
dGEpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faGFzQ29udGludW91c0ZyYW1l
ID0gdHJ1ZTsKICAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lT3BDb2RlID0gV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZUJpbmFyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCmluZGV4IDQ2NjQxYzA2YzIx
Y2YwNWI4ODBlODg1YjQ5NzBhN2E0YzE0MDA4YTkuLmVkZWExNTFlYWEzMDg1NzJmMmM3ZWQ2NGEx
NDIwMjY1YjkzNWNmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGll
bnQoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSB7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYpIHsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hh
cj4+KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1
ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgLyogYnVmZmVyZWRBbW91bnQgKi8pIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA4ODczYzE2ZTQ4NGEzNjVi
NGQxZDYyYTdkOGFkMTY3YWVjNzJlNmZlLi45MjkzMzNhNzI5YWRjMTFlMGZmNjYxNGU3OTBjY2Vm
NWZmN2U5YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTI4MywxNiArMjgzLDE2IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzCiAgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKGNyZWF0ZUNhbGxiYWNr
VGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlTWVzc2FnZSwgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBtZXNzYWdlKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckds
b2JhbFNjb3BlRGlkUmVjZWl2ZUJpbmFyeURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IHdvcmtlckNsaWVudFdyYXBwZXIsIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlEYXRh
KQorc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlQmluYXJ5RGF0YShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxjaGFyPj4gYmluYXJ5RGF0YSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgd29ya2VyQ2xpZW50V3Jh
cHBlci0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoYmluYXJ5RGF0YSk7CisgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoc3RkOjptb3ZlKGJpbmFyeURhdGEpKTsKIH0K
IAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2
ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCit2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0
YShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlEYXRhKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRS
ZWNlaXZlQmluYXJ5RGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBiaW5hcnlEYXRhKSwgbV90
YXNrTW9kZSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlQmlu
YXJ5RGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzdGQ6Om1vdmUoYmluYXJ5RGF0YSkpLCBt
X3Rhc2tNb2RlKTsKIH0KIAogc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRVcGRhdGVC
dWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKQEAgLTM2MSwyOCArMzYxLDIwIEBA
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6On5CcmlkZ2UoKQogCiBj
bGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyR2xvYmFsU2NvcGVE
aWRJbml0aWFsaXplVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiBjcmVhdGUoV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXIqIHBlZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94eSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckdsb2JhbFNjb3BlRGlkSW5p
dGlhbGl6ZVRhc2socGVlciwgbG9hZGVyUHJveHksIHdvcmtlckNsaWVudFdyYXBwZXIpKTsKLSAg
ICB9Ci0KICAgICB2aXJ0dWFsIH5Xb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpIE9WRVJSSURFCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGlmIChtX3dvcmtlckNs
aWVudFdyYXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAg
ICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0dGVkIGVhcmxpZXIsIHdlIG5lZWQg
dG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0ZSB0aGUgcGVlci4KLSAgICAgICAg
ICAgIE93blB0cjxXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcj4gcGVlciA9
IGFkb3B0UHRyKG1fcGVlcik7Ci0gICAgICAgICAgICBtX3BlZXIgPSAwOwotICAgICAgICAgICAg
bV9sb2FkZXJQcm94eS0+cG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVzdHJveSwgcGVlci5yZWxl
YXNlKCkpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcj4gcGVlcihtX3BlZXIpOworICAgICAgICAgICAgbV9wZWVyID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIG1fbG9hZGVyUHJveHktPnBvc3RUYXNrVG9Mb2FkZXIoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZERlc3Ryb3ksIHN0ZDo6bW92ZShwZWVyKSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChtX3Bl
ZXIpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KIAotcHJpdmF0ZToKICAgICBXb3JrZXJHbG9iYWxTY29wZURp
ZEluaXRpYWxpemVUYXNrKFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyKiBw
ZWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JrZXJMb2FkZXJQcm94
eSogbG9hZGVyUHJveHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyKQpAQCAtMzkyLDYgKzM4NCw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAor
cHJpdmF0ZToKKwogICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyKiBt
X3BlZXI7CiAgICAgV29ya2VyTG9hZGVyUHJveHkqIG1fbG9hZGVyUHJveHk7CiAgICAgUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRX
cmFwcGVyOwpAQCAtNDA2LDcgKzQwMCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0CiAKICAg
ICBQZWVyKiBwZWVyID0gUGVlcjo6Y3JlYXRlKGNsaWVudFdyYXBwZXIsICpsb2FkZXJQcm94eSwg
Y29udGV4dCwgdGFza01vZGUpOwogICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LT5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzazo6Y3JlYXRl
KHBlZXIsIGxvYWRlclByb3h5LCBjbGllbnRXcmFwcGVyKSwgdGFza01vZGUpOworICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJH
bG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrPihwZWVyLCBsb2FkZXJQcm94eSwgY2xpZW50V3Jh
cHBlciksIHRhc2tNb2RlKTsKICAgICBpZiAoIXNlbnQpIHsKICAgICAgICAgY2xpZW50V3JhcHBl
ci0+Y2xlYXJQZWVyKCk7CiAgICAgICAgIGRlbGV0ZSBwZWVyOwpAQCAtNDkzLDExICs0ODcsMTEg
QEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICBpZiAoIW1fd29ya2VyQ2xpZW50V3JhcHBl
ciB8fCAhbV9wZWVyKQogICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRGYWlsOwogICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0
aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCi0g
ICAgT3duUHRyPFZlY3RvcjxjaGFyPj4gZGF0YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4o
Ynl0ZUxlbmd0aCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IGRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oYnl0ZUxlbmd0aCk7CiAgICAgaWYgKGJpbmFy
eURhdGEuYnl0ZUxlbmd0aCgpKQogICAgICAgICBtZW1jcHkoZGF0YS0+ZGF0YSgpLCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxl
bmd0aCk7CiAgICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIsIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MobV9wZWVyKSwgZGF0YS5yZWxlYXNlKCkpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlciwgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyhtX3BlZXIpLCBzdGQ6Om1vdmUoZGF0YSkpKTsKICAgICBSZWY8QnJpZGdlPiBwcm90ZWN0KCp0
aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlci5nZXQoKTsKQEAgLTU4OSwxMSArNTgzLDExIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgY2xlYXJDbGll
bnRXcmFwcGVyKCk7CiAgICAgaWYgKG1fcGVlcikgewotICAgICAgICBPd25QdHI8UGVlcj4gcGVl
ciA9IGFkb3B0UHRyKG1fcGVlcik7Ci0gICAgICAgIG1fcGVlciA9IDA7Ci0gICAgICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVzdHJveSwgcGVlci5yZWxlYXNlKCkp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBlZXI+IHBlZXIobV9wZWVyKTsKKyAgICAgICAg
bV9wZWVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVy
KGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWREZXN0cm95LCBzdGQ6Om1vdmUocGVlcikpKTsKICAgICB9Ci0gICAgbV93b3JrZXJH
bG9iYWxTY29wZSA9IDA7CisgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGNhNTI2ZGIyMTRkZDFhZmQ4MzM5Yzg2
ZjM0MzM5N2NmNTg2MzUxZjYuLjI1Y2YxODc1N2E0NzAzNWU3NjE5NDFhNjRlYjZiZmQ2NDJjZjk4
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xMDAsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IGZ1bmN0
aW9ucy4KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSBPVkVSUklERTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
T1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNz
T3duUHRyPFZlY3RvcjxjaGFyPj4pIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJpbmFyeURhdGEoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4pIE9WRVJSSURF
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQg
bG9uZyBidWZmZXJlZEFtb3VudCkgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydENsb3NpbmdIYW5kc2hha2UoKSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaAppbmRleCBkMzIxYzU3ZjA1YzlmMDIzMmYxZTdkMDRjYTQ0MjFjMzc0YjA4NjI1Li5i
MmQyZjk5MDQ5ZjVlY2IzNmM1NjM5NzdiZWU5NmEzNjk2YTNkYmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTc3LDIwICs3NywxNSBAQCBwcml2
YXRlOgogCiBjbGFzcyBEZWxldGVDYWxsYmFja0RhdGFUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERlbGV0
ZUNhbGxiYWNrRGF0YVRhc2s+IGNyZWF0ZShKU0NhbGxiYWNrRGF0YSogZGF0YSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVsZXRlQ2FsbGJhY2tEYXRhVGFzayhkYXRhKSk7
Ci0gICAgfQotCiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKQogICAgIHsKICAgICAgICAgZGVsZXRlIG1fZGF0YTsKICAgICB9CiAgICAgdmlydHVh
bCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci1wcml2YXRlOgog
CiAgICAgRGVsZXRlQ2FsbGJhY2tEYXRhVGFzayhKU0NhbGxiYWNrRGF0YSogZGF0YSkgOiBtX2Rh
dGEoZGF0YSkge30KIAorcHJpdmF0ZToKICAgICBKU0NhbGxiYWNrRGF0YSogbV9kYXRhOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRh
c2suaAppbmRleCAwNjkzOGMyYzc0MTAxYWM1YTY2MGM2YTk1NjZlZjk2ZDI1MzIwMDQ3Li45ODY2
Yjk5NGRhZjBmNzE2MmNhMjhiNTI1N2FiYmQyMjdlMDI5ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaApAQCAtMzUsMTYgKzM1
LDEwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s7CiAKIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0VGFzayBGSU5BTCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxKU0dsb2JhbE9iamVjdFRhc2s+IGNyZWF0ZShK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEpTQzo6TWljcm90YXNr
PiB0YXNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBKU0dsb2JhbE9iamVj
dFRhc2soZ2xvYmFsT2JqZWN0LCB0YXNrKSk7Ci0gICAgfQotCisgICAgSlNHbG9iYWxPYmplY3RU
YXNrKEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxKU0M6Ok1pY3JvdGFzaz4pOwogICAg
IHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0VGFzaygpOwogCiBwcml2YXRlOgotICAgIEpTR2xvYmFs
T2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8SlNDOjpNaWNyb3Rhc2s+
KTsKLQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgT1ZFUlJJREU7CiAKICAgICBSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gbV9jYWxs
YmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CmluZGV4IDUwMDRhMTk2NmQ0N2JiNTljOGVmMDdhNWVmOTFjOGU2OWEyMWIyNzguLjdlOTRiM2U2
YmJjZDlmZWIxODY5ODBkN2U5NWYzMjUxZjViYTRkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wg
SlNET01XaW5kb3dCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBvYmplY3QpCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVu
dExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+
IHRhc2spCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKEpTR2xvYmFsT2JqZWN0VGFzazo6Y3Jl
YXRlKChKU0RPTVdpbmRvd0Jhc2UqKXRoaXNPYmplY3QsIHRhc2spKTsKKyAgICB0aGlzT2JqZWN0
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8SlNH
bG9iYWxPYmplY3RUYXNrPigoSlNET01XaW5kb3dCYXNlKil0aGlzT2JqZWN0LCB0YXNrKSk7CiB9
CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp3aWxsUmVtb3ZlRnJvbVdpbmRvd1NoZWxsKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmNwcAppbmRleCBiYzQyYWJhNGM4NDU1OWZjY2Q3NmNkZTEzZDkyNTQ4ODQyZTNjNWUyLi4x
Y2Y3N2MxNzQ3MTBhZDE3YjBiODMxMWJmODJmZGJhYWVmMTI2ODQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBA
IC0xMDMsNyArMTAzLDcgQEAgYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlw
dEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0dsb2JhbE9iamVjdCoKIHZvaWQgSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBvYmplY3QsIFBhc3NSZWZQdHI8TWljcm90YXNrPiB0YXNrKQogewogICAgIGNvbnN0IEpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UqPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soSlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9N
R2xvYmFsT2JqZWN0Kil0aGlzT2JqZWN0LCB0YXNrKSk7CisgICAgdGhpc09iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0VGFzaz4oKEpTRE9NR2xvYmFsT2JqZWN0Kil0aGlzT2JqZWN0LCB0YXNrKSk7CiB9CiAKIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xv
YmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBlZjViNTY0ZWI0YmNjOTU0MDBi
ZWVhOGQ0ZTg3ZjY1MjhiODkwZDA4Li4wZDYyZGU5MzlkZmVmMjNkNWFiODRiMTNhMmJmNWI2MmQ5
NWQ1MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtMzIyMCw3ICszMjIwLDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJ
bXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY29udGV4dCB8
fCBjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBkZWxldGUgbV9kYXRhO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgZWxzZVxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGNvbnRleHQtPnBv
c3RUYXNrKERlbGV0ZUNhbGxiYWNrRGF0YVRhc2s6OmNyZWF0ZShtX2RhdGEpKTtcbiIpOworICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPERlbGV0ZUNhbGxiYWNrRGF0YVRhc2s+KG1fZGF0YSkpO1xuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWZuZGVmIE5ERUJVR1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgbV9kYXRhID0gMDtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaAppbmRleCA2Y2M1Zjg0MjE1NmQyMGU4
MDg2NWNhMzQ4NTYyOGQxYTcyNTc3ZGQyLi42ZjRlZWM3MGIyYzk2MzAyYzRmYWMzOGU1YjVkN2Zi
NzM1YTI3NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTIsOCArNTEsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRUYXNrVHJhaXRzPFBhc3NSZWZQdHI8VD4+IHsKICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8
VD4gUGFyYW1UeXBlOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhy
ZWFkVGFza1RyYWl0czxQYXNzT3duUHRyPFQ+PiB7Ci0gICAgdHlwZWRlZiBQYXNzT3duUHRyPFQ+
IFBhcmFtVHlwZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZFRhc2tU
cmFpdHM8c3RkOjp1bmlxdWVfcHRyPFQ+PiB7CisgICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8
VD4gUGFyYW1UeXBlOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4K
QEAgLTYzLDIxICs2MiwyMSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBDcm9zc1RocmVhZFRhc2sx
PFAxLCBNUDE+IENyb3NzVGhyZWFkVGFzazsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhy
ZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CiAKLSAgICBzdGF0aWMgUGFzc093
blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1l
dGVyMSkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRl
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKSk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazE+KG1ldGhvZCwgc3Rk
Ojpmb3J3YXJkPFBhcmFtMT4ocGFyYW1ldGVyMSkpOwogICAgIH0KIAotcHJpdmF0ZToKICAgICBD
cm9zc1RocmVhZFRhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxKQogICAgICAg
ICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkK
KyAgICAgICAgLCBtX3BhcmFtZXRlcjEoc3RkOjpmb3J3YXJkPFBhcmFtMT4ocGFyYW1ldGVyMSkp
CiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgICgqbV9tZXRo
b2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSk7CisgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQs
IHN0ZDo6bW92ZShtX3BhcmFtZXRlcjEpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MywyMiAr
OTIsMjIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJh
aXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhy
ZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CiAKLSAgICBzdGF0aWMgUGFzc093
blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1l
dGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFy
YW0yIHBhcmFtZXRlcjIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3Nz
VGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrPihtZXRob2QsIHN0ZDo6Zm9yd2Fy
ZDxQYXJhbTE+KHBhcmFtZXRlcjEpLCBzdGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSk7
CiAgICAgfQogCi1wcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFzazIoTWV0aG9kIG1ldGhvZCwg
UGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyKQogICAgICAgICA6IG1fbWV0aG9k
KG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBt
X3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEoc3RkOjpmb3J3
YXJkPFBhcmFtMT4ocGFyYW1ldGVyMSkpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHN0ZDo6Zm9y
d2FyZDxQYXJhbTI+KHBhcmFtZXRlcjIpKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFy
YW1ldGVyMik7CisgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIHN0ZDo6bW92ZShtX3BhcmFt
ZXRlcjEpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIyKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MTI2LDIzICsxMjUsMjMgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBlIFBhcmFtMjsKICAgICB0eXBlZGVmIHR5cGVuYW1l
IENyb3NzVGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CiAKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1l
dGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1l
dGVyMykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNr
KG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOworICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s+KG1ldGhvZCwgc3RkOjpmb3J3
YXJkPFBhcmFtMT4ocGFyYW1ldGVyMSksIHN0ZDo6Zm9yd2FyZDxQYXJhbTI+KHBhcmFtZXRlcjIp
LCBzdGQ6OmZvcndhcmQ8UGFyYW0zPihwYXJhbWV0ZXIzKSk7CiAgICAgfQogCi1wcml2YXRlOgog
ICAgIENyb3NzVGhyZWFkVGFzazMoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBh
cmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMykKICAgICAgICAgOiBtX21ldGhvZCht
ZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgICAgICwgbV9w
YXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMp
CisgICAgICAgICwgbV9wYXJhbWV0ZXIxKHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEp
KQorICAgICAgICAsIG1fcGFyYW1ldGVyMihzdGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIy
KSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMoc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFyYW1ldGVy
MykpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgICgqbV9t
ZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMp
OworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIxKSwg
c3RkOjptb3ZlKG1fcGFyYW1ldGVyMiksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjMpKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0xNjIsMjQgKzE2MSwyNCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0zOwogICAg
IHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA0Pjo6UGFyYW1UeXBlIFBh
cmFtNDsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1l
dGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0z
IHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRl
cjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRl
cjQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayht
ZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQpKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrPihtZXRob2Qs
IHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpLCBzdGQ6OmZvcndhcmQ8UGFyYW0yPihw
YXJhbWV0ZXIyKSwgc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFyYW1ldGVyMyksIHN0ZDo6Zm9yd2Fy
ZDxQYXJhbTQ+KHBhcmFtZXRlcjQpKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJl
YWRUYXNrNChNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRl
cjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKICAgICAgICAgOiBtX21l
dGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgICAg
ICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFt
ZXRlcjMpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICwgbV9w
YXJhbWV0ZXIxKHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpKQorICAgICAgICAsIG1f
cGFyYW1ldGVyMihzdGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSkKKyAgICAgICAgLCBt
X3BhcmFtZXRlcjMoc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFyYW1ldGVyMykpCisgICAgICAgICwg
bV9wYXJhbWV0ZXI0KHN0ZDo6Zm9yd2FyZDxQYXJhbTQ+KHBhcmFtZXRlcjQpKQogICAgIHsKICAg
ICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0
LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQp
OworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIxKSwg
c3RkOjptb3ZlKG1fcGFyYW1ldGVyMiksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjMpLCBzdGQ6Om1v
dmUobV9wYXJhbWV0ZXI0KSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjAxLDI1ICsyMDAsMjUg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA0
Pjo6UGFyYW1UeXBlIFBhcmFtNDsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFz
a1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
cm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwg
UGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwg
UGFyYW01IHBhcmFtZXRlcjUpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBh
cmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBh
cmFtZXRlcjUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFk
VGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRl
cjQsIHBhcmFtZXRlcjUpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NU
aHJlYWRUYXNrPihtZXRob2QsIHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpLCBzdGQ6
OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSwgc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFyYW1l
dGVyMyksIHN0ZDo6Zm9yd2FyZDxQYXJhbTQ+KHBhcmFtZXRlcjQpLCBzdGQ6OmZvcndhcmQ8UGFy
YW01PihwYXJhbWV0ZXI1KSk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFz
azUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQ
YXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1KQog
ICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1l
dGVyMSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3Bh
cmFtZXRlcjMocGFyYW1ldGVyMykKLSAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkK
LSAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgLCBtX3BhcmFtZXRl
cjEoc3RkOjpmb3J3YXJkPFBhcmFtMT4ocGFyYW1ldGVyMSkpCisgICAgICAgICwgbV9wYXJhbWV0
ZXIyKHN0ZDo6Zm9yd2FyZDxQYXJhbTI+KHBhcmFtZXRlcjIpKQorICAgICAgICAsIG1fcGFyYW1l
dGVyMyhzdGQ6OmZvcndhcmQ8UGFyYW0zPihwYXJhbWV0ZXIzKSkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcjQoc3RkOjpmb3J3YXJkPFBhcmFtND4ocGFyYW1ldGVyNCkpCisgICAgICAgICwgbV9wYXJh
bWV0ZXI1KHN0ZDo6Zm9yd2FyZDxQYXJhbTU+KHBhcmFtZXRlcjUpKQogICAgIHsKICAgICB9CiAK
K3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3Bh
cmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFy
YW1ldGVyNSk7CisgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIHN0ZDo6bW92ZShtX3BhcmFt
ZXRlcjEpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIyKSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyMyks
IHN0ZDo6bW92ZShtX3BhcmFtZXRlcjQpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI1KSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtMjQzLDI2ICsyNDIsMjYgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFtNTsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQ
YXJhbTY7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShN
ZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFt
MyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFt
NiBwYXJhbWV0ZXI2KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
PiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0
ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0
ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1l
dGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNikpOworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s+KG1ldGhvZCwgc3RkOjpmb3J3YXJk
PFBhcmFtMT4ocGFyYW1ldGVyMSksIHN0ZDo6Zm9yd2FyZDxQYXJhbTI+KHBhcmFtZXRlcjIpLCBz
dGQ6OmZvcndhcmQ8UGFyYW0zPihwYXJhbWV0ZXIzKSwgc3RkOjpmb3J3YXJkPFBhcmFtND4ocGFy
YW1ldGVyNCksIHN0ZDo6Zm9yd2FyZDxQYXJhbTU+KHBhcmFtZXRlcjUpLCBzdGQ6OmZvcndhcmQ8
UGFyYW02PihwYXJhbWV0ZXI2KSk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIENyb3NzVGhyZWFk
VGFzazYoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIy
LCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1
LCBQYXJhbTYgcGFyYW1ldGVyNikKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCi0gICAgICAg
ICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFt
ZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCi0gICAgICAgICwgbV9w
YXJhbWV0ZXI0KHBhcmFtZXRlcjQpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI1KHBhcmFtZXRlcjUp
Ci0gICAgICAgICwgbV9wYXJhbWV0ZXI2KHBhcmFtZXRlcjYpCisgICAgICAgICwgbV9wYXJhbWV0
ZXIxKHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpKQorICAgICAgICAsIG1fcGFyYW1l
dGVyMihzdGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcjMoc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFyYW1ldGVyMykpCisgICAgICAgICwgbV9wYXJh
bWV0ZXI0KHN0ZDo6Zm9yd2FyZDxQYXJhbTQ+KHBhcmFtZXRlcjQpKQorICAgICAgICAsIG1fcGFy
YW1ldGVyNShzdGQ6OmZvcndhcmQ8UGFyYW01PihwYXJhbWV0ZXI1KSkKKyAgICAgICAgLCBtX3Bh
cmFtZXRlcjYoc3RkOjpmb3J3YXJkPFBhcmFtNj4ocGFyYW1ldGVyNikpCiAgICAgewogICAgIH0K
IAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1f
cGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCwgbV9w
YXJhbWV0ZXI1LCBtX3BhcmFtZXRlcjYpOworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBz
dGQ6Om1vdmUobV9wYXJhbWV0ZXIxKSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyMiksIHN0ZDo6bW92
ZShtX3BhcmFtZXRlcjMpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI0KSwgc3RkOjptb3ZlKG1fcGFy
YW1ldGVyNSksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjYpKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0yODgsMjcgKzI4NywyNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1Ro
cmVhZFRhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwogICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA3Pjo6UGFyYW1UeXBlIFBhcmFtNzsKIAotICAgIHN0
YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBh
cmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBh
cmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBh
cmFtNyBwYXJhbWV0ZXI3KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRU
YXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJh
bWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJh
bWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFt
ZXRlcjYsIHBhcmFtZXRlcjcpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jv
c3NUaHJlYWRUYXNrPihtZXRob2QsIHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpLCBz
dGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSwgc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFy
YW1ldGVyMyksIHN0ZDo6Zm9yd2FyZDxQYXJhbTQ+KHBhcmFtZXRlcjQpLCBzdGQ6OmZvcndhcmQ8
UGFyYW01PihwYXJhbWV0ZXI1KSwgc3RkOjpmb3J3YXJkPFBhcmFtNj4ocGFyYW1ldGVyNiksIHN0
ZDo6Zm9yd2FyZDxQYXJhbTc+KHBhcmFtZXRlcjcpKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAg
Q3Jvc3NUaHJlYWRUYXNrNyhNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0y
IHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01
IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNykKICAgICAg
ICAgOiBtX21ldGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEp
Ci0gICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0
ZXIzKHBhcmFtZXRlcjMpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCi0gICAg
ICAgICwgbV9wYXJhbWV0ZXI1KHBhcmFtZXRlcjUpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI2KHBh
cmFtZXRlcjYpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCisgICAgICAgICwg
bV9wYXJhbWV0ZXIxKHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpKQorICAgICAgICAs
IG1fcGFyYW1ldGVyMihzdGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSkKKyAgICAgICAg
LCBtX3BhcmFtZXRlcjMoc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFyYW1ldGVyMykpCisgICAgICAg
ICwgbV9wYXJhbWV0ZXI0KHN0ZDo6Zm9yd2FyZDxQYXJhbTQ+KHBhcmFtZXRlcjQpKQorICAgICAg
ICAsIG1fcGFyYW1ldGVyNShzdGQ6OmZvcndhcmQ8UGFyYW01PihwYXJhbWV0ZXI1KSkKKyAgICAg
ICAgLCBtX3BhcmFtZXRlcjYoc3RkOjpmb3J3YXJkPFBhcmFtNj4ocGFyYW1ldGVyNikpCisgICAg
ICAgICwgbV9wYXJhbWV0ZXI3KHN0ZDo6Zm9yd2FyZDxQYXJhbTc+KHBhcmFtZXRlcjcpKQogICAg
IHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICAoKm1fbWV0aG9kKShj
b250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFt
ZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2LCBtX3BhcmFtZXRlcjcpOworICAgICAg
ICAoKm1fbWV0aG9kKShjb250ZXh0LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIxKSwgc3RkOjptb3Zl
KG1fcGFyYW1ldGVyMiksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjMpLCBzdGQ6Om1vdmUobV9wYXJh
bWV0ZXI0KSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyNSksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjYp
LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI3KSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMzM1LDMx
ICszMzQsMzEgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNr
VHJhaXRzPFA2Pjo6UGFyYW1UeXBlIFBhcmFtNjsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3Nz
VGhyZWFkVGFza1RyYWl0czxQNz46OlBhcmFtVHlwZSBQYXJhbTc7CiAgICAgdHlwZWRlZiB0eXBl
bmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDg+OjpQYXJhbVR5cGUgUGFyYW04OwotICAgIAot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRl
cjYsIFBhcmFtNyBwYXJhbWV0ZXI3LCBQYXJhbTggcGFyYW1ldGVyOCkKKworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFy
YW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFy
YW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFy
YW03IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0
ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJh
bWV0ZXI3LCBwYXJhbWV0ZXI4KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkVGFzaz4obWV0aG9kLCBzdGQ6OmZvcndhcmQ8UGFyYW0xPihwYXJhbWV0ZXIxKSwg
c3RkOjpmb3J3YXJkPFBhcmFtMj4ocGFyYW1ldGVyMiksIHN0ZDo6Zm9yd2FyZDxQYXJhbTM+KHBh
cmFtZXRlcjMpLCBzdGQ6OmZvcndhcmQ8UGFyYW00PihwYXJhbWV0ZXI0KSwgc3RkOjpmb3J3YXJk
PFBhcmFtNT4ocGFyYW1ldGVyNSksIHN0ZDo6Zm9yd2FyZDxQYXJhbTY+KHBhcmFtZXRlcjYpLCBz
dGQ6OmZvcndhcmQ8UGFyYW03PihwYXJhbWV0ZXI3KSwgc3RkOjpmb3J3YXJkPFBhcmFtOD4ocGFy
YW1ldGVyOCkpOwogICAgIH0KLSAgICAKLXByaXZhdGU6CisKICAgICBDcm9zc1RocmVhZFRhc2s4
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFy
YW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFy
YW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3LCBQYXJhbTggcGFyYW1ldGVyOCkKICAg
ICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQotICAg
ICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVy
MykKLSAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQotICAgICwgbV9wYXJhbWV0ZXI1KHBh
cmFtZXRlcjUpCi0gICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVyNikKLSAgICAsIG1fcGFyYW1l
dGVyNyhwYXJhbWV0ZXI3KQotICAgICwgbV9wYXJhbWV0ZXI4KHBhcmFtZXRlcjgpCisgICAgICAg
ICwgbV9wYXJhbWV0ZXIxKHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpKQorICAgICAg
ICAsIG1fcGFyYW1ldGVyMihzdGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSkKKyAgICAg
ICAgLCBtX3BhcmFtZXRlcjMoc3RkOjpmb3J3YXJkPFBhcmFtMz4ocGFyYW1ldGVyMykpCisgICAg
ICAgICwgbV9wYXJhbWV0ZXI0KHN0ZDo6Zm9yd2FyZDxQYXJhbTQ+KHBhcmFtZXRlcjQpKQorICAg
ICAgICAsIG1fcGFyYW1ldGVyNShzdGQ6OmZvcndhcmQ8UGFyYW01PihwYXJhbWV0ZXI1KSkKKyAg
ICAgICAgLCBtX3BhcmFtZXRlcjYoc3RkOjpmb3J3YXJkPFBhcmFtNj4ocGFyYW1ldGVyNikpCisg
ICAgICAgICwgbV9wYXJhbWV0ZXI3KHN0ZDo6Zm9yd2FyZDxQYXJhbTc+KHBhcmFtZXRlcjcpKQor
ICAgICAgICAsIG1fcGFyYW1ldGVyOChzdGQ6OmZvcndhcmQ8UGFyYW04PihwYXJhbWV0ZXI4KSkK
ICAgICB7CiAgICAgfQotICAgIAorCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgKCpt
X21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVy
MywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVyNiwgbV9wYXJhbWV0ZXI3
LCBtX3BhcmFtZXRlcjgpOworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBzdGQ6Om1vdmUo
bV9wYXJhbWV0ZXIxKSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyMiksIHN0ZDo6bW92ZShtX3BhcmFt
ZXRlcjMpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI0KSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyNSks
IHN0ZDo6bW92ZShtX3BhcmFtZXRlcjYpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI3KSwgc3RkOjpt
b3ZlKG1fcGFyYW1ldGVyOCkpOwogICAgIH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBNZXRob2Qg
bV9tZXRob2Q7CiAgICAgUDEgbV9wYXJhbWV0ZXIxOwpAQCAtMzczLDc2ICszNzIsNzYgQEAgcHJp
dmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1QYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0
ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFj
a1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSks
CiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7CiAgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFz
azE8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDE+OjpjcmVhdGUoCiAg
ICAgICAgIG1ldGhvZCwKLSAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFt
ZXRlcjEpKTsKKyAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHN0ZDo6bW92ZShw
YXJhbWV0ZXIxKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRo
b2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiksCiAgICAgY29uc3QgUDEmIHBh
cmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQogewogICAgIHJldHVybiBDcm9zc1RocmVh
ZFRhc2syPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMj46OmNyZWF0ZSgKICAgICAgICAgbWV0
aG9kLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENy
b3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSk7CisgICAgICAgIENyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyMSkpLCBDcm9zc1RocmVhZENv
cGllcjxQMj46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjIpKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVu
YW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMpLAogICAgIGNvbnN0IFAxJiBw
YXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7
CiAgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazM8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAy
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMz46OmNyZWF0ZSgKICAg
ICAgICAgbWV0aG9kLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1l
dGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpKTsKKyAgICAgICAgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXIxKSksIENyb3NzVGhyZWFk
Q29waWVyPFAyPjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyMikpLAorICAgICAgICBDcm9zc1Ro
cmVhZENvcGllcjxQMz46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjMpKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+Ci1Q
YXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFz
aygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVD
YWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE1QMSwgTVAyLCBNUDMsIE1QNCksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAy
JiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQp
CiB7CiAgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazQ8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwg
TVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKICAgICAgICAg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQ+OjpjcmVhdGUoCiAgICAg
ICAgICAgICBtZXRob2QsCi0gICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHko
cGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAg
ICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKKyAgICAgICAgICAgIENyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyMSkpLCBDcm9zc1RocmVhZENv
cGllcjxQMj46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjIpKSwKKyAgICAgICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyMykpLCBDcm9zc1RocmVh
ZENvcGllcjxQND46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjQpKSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVu
YW1lIFA1LCB0eXBlbmFtZSBNUDU+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKICAgICBj
b25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJh
bWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUpCiB7CiAg
ICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazU8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+
OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKICAgICAgICAgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFA1Pjo6VHlwZSwgTVA1Pjo6Y3JlYXRlKAogICAgICAgICAgICAgbWV0aG9kLAotICAg
ICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1Ro
cmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29w
eShwYXJhbWV0ZXI0KSwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShw
YXJhbWV0ZXI1KSk7CisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkoc3Rk
Ojptb3ZlKHBhcmFtZXRlcjEpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHN0ZDo6bW92
ZShwYXJhbWV0ZXIyKSksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHko
c3RkOjptb3ZlKHBhcmFtZXRlcjMpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHN0ZDo6
bW92ZShwYXJhbWV0ZXI0KSksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNv
cHkoc3RkOjptb3ZlKHBhcmFtZXRlcjUpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0
eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBl
bmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFt
ZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9p
ZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwg
TVA1LCBNUDYpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVy
MiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYg
cGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRlcjYpCiB7CiAgICAgcmV0dXJuIENyb3NzVGhy
ZWFkVGFzazY8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMz46OlR5cGUsIE1QMywKICAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwg
TVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNj46OmNyZWF0ZSgK
ICAgICAgICAgICAgIG1ldGhvZCwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6
Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIp
LAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBD
cm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgICAgICBDcm9z
c1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksIENyb3NzVGhyZWFkQ29waWVyPFA2
Pjo6Y29weShwYXJhbWV0ZXI2KSk7CisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46
OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjEpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5
KHN0ZDo6bW92ZShwYXJhbWV0ZXIyKSksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQ
Mz46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjMpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpj
b3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXI0KSksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGll
cjxQNT46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjUpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+
Ojpjb3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXI2KSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlw
ZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5h
bWUgTVA3PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVD
YWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcpLAogICAgIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRl
cjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYm
IHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3KQogewpAQCAtNDUwLDE0ICs0NDksMTQg
QEAgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFj
a1Rhc2soCiAgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCiAgICAgICAgIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3Pjo6Y3JlYXRlKAogICAgICAgICAgICAgbWV0aG9kLAot
ICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9z
c1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgICAgICBDcm9zc1Ro
cmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6
Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29w
eShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpLAot
ICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpKTsKKyAg
ICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVy
MSkpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjIpKSwK
KyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShzdGQ6Om1vdmUocGFyYW1l
dGVyMykpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjQp
KSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShzdGQ6Om1vdmUocGFy
YW1ldGVyNSkpLCBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRl
cjYpKSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShzdGQ6Om1vdmUo
cGFyYW1ldGVyNykpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlw
ZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5h
bWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUg
UDgsIHR5cGVuYW1lIE1QOD4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1Q
OCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0
IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRl
cjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNywgY29uc3QgUDgm
IHBhcmFtZXRlcjgpCiB7CkBAIC00NjUsMTAgKzQ2NCwxMCBAQCBQYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+OjpUeXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwg
TVA2LAogICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3LCB0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQOD46OlR5cGUsIE1QOD46OmNyZWF0ZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQ
Mj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRl
cjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHko
cGFyYW1ldGVyNiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpLCBDcm9z
c1RocmVhZENvcGllcjxQOD46OmNvcHkocGFyYW1ldGVyOCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyMSkpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNv
cHkoc3RkOjptb3ZlKHBhcmFtZXRlcjIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkoc3Rk
Ojptb3ZlKHBhcmFtZXRlcjMpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHN0ZDo6bW92
ZShwYXJhbWV0ZXI0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHN0ZDo6bW92ZShwYXJh
bWV0ZXI1KSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVy
NikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyNykpLCBD
cm9zc1RocmVhZENvcGllcjxQOD46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjgpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDc1NDFj
ZmFkOGYyMDA0OGYxZjgyMDZiMzI2YjFiY2NlMjkwYzY4MmQuLjQ5YWMyMWUxNDJiYzFiOTFhZjc5
MTFjMWYyY2FjZjNhYzJhYTdkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDg1OCw3
ICs0ODU4LDcgQEAgdm9pZCBEb2N1bWVudDo6cGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIo
Y29uc3QgU3RyaW5nJiBkbnNQcmVmZXRjaENvbnRyb2wpCiB2b2lkIERvY3VtZW50OjphZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAg
ICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xl
TWVzc2FnZVRhc2s6OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBv
c3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QWRkQ29uc29sZU1lc3NhZ2VUYXNrPihzb3VyY2UsIGxl
dmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4NjksNyArNDg2
OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2b2lkIERvY3VtZW50OjphZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
aywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
KQogewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRk
Q29uc29sZU1lc3NhZ2VUYXNrOjpjcmVhdGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOworICAg
ICAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFkZENvbnNvbGVNZXNzYWdlVGFzaz4oc291
cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODg1
LDE0ICs0ODg1LDE0IEBAIFNlY3VyaXR5T3JpZ2luKiBEb2N1bWVudDo6dG9wT3JpZ2luKCkgY29u
c3QKIHN0cnVjdCBQZXJmb3JtVGFza0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBlcmZvcm1UYXNrQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFBlcmZvcm1UYXNrQ29udGV4dChXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVudCwgUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQorICAgIFBlcmZvcm1UYXNr
Q29udGV4dChXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiAgICAgICAgIDogZG9jdW1lbnRSZWZlcmVu
Y2UoZG9jdW1lbnQpCi0gICAgICAgICwgdGFzayh0YXNrKQorICAgICAgICAsIHRhc2soc3RkOjpt
b3ZlKHRhc2spKQogICAgIHsKICAgICB9CiAKICAgICBXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVu
dFJlZmVyZW5jZTsKLSAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFz
azsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFz
azsKIH07CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZFJlY2VpdmVUYXNrKHZvaWQqIHVudHlwZWRDb250
ZXh0KQpAQCAtNDkwOCwyMiArNDkwOCwyMiBAQCB2b2lkIERvY3VtZW50OjpkaWRSZWNlaXZlVGFz
ayh2b2lkKiB1bnR5cGVkQ29udGV4dCkKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFn
ZSgpOwogICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZlcnNMb2FkaW5nKCkpIHx8ICFkb2N1bWVu
dC0+bV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRvY3VtZW50LT5tX3BlbmRp
bmdUYXNrcy5hcHBlbmQoY29udGV4dC0+dGFzay5yZWxlYXNlKCkpOworICAgICAgICBkb2N1bWVu
dC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bW92ZShjb250ZXh0LT50YXNrKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb250ZXh0LT50YXNrLT5wZXJmb3JtVGFzayhkb2N1
bWVudCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFz
aykKK3ZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiB0YXNrKQog
ewotICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkUmVjZWl2ZVRhc2ssIG5ldyBQZXJmb3JtVGFza0Nv
bnRleHQobV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHRhc2spKTsKKyAgICBjYWxsT25N
YWluVGhyZWFkKGRpZFJlY2VpdmVUYXNrLCBuZXcgUGVyZm9ybVRhc2tDb250ZXh0KG1fd2Vha0Zh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpLCBzdGQ6Om1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBEb2N1
bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKQogewogICAgIHdo
aWxlICghbV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxUYXNrPiB0
YXNrID0gbV9wZW5kaW5nVGFza3NbMF0ucmVsZWFzZSgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGFzaz4gdGFzayA9IHN0ZDo6bW92ZShtX3BlbmRpbmdUYXNrc1swXSk7CiAgICAgICAgIG1f
cGVuZGluZ1Rhc2tzLnJlbW92ZSgwKTsKICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2sodGhpcyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA3MDBhZTBhMzAxZWQ3ZGI0OTQxY2E3Y2Zj
ODAyZjdkN2RkMDZjZWM2Li5kYTVkMjlmMTczMTEzZWZjMzBkNGM2M2JlOTFhOGU0ZTAyOGVkZGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTc1LDcgKzk3NSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRE5TUHJlZmV0Y2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ROU1ByZWZldGNo
RW5hYmxlZDsgfQogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3Qg
U3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPikg
T1ZFUlJJREU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNo
cm9ub3VzbHkuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNr
Pikgb3ZlcnJpZGU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5
bmNocm9ub3VzbHkuCiAKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ckNhbGxiYWNrcygpOwpAQCAtMTYwNSw3ICsxNjA1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgVGltZXI8RG9jdW1lbnQ+IG1fcGVuZGluZ1Rhc2tzVGltZXI7Ci0gICAgVmVjdG9yPE93blB0
cjxUYXNrPj4gbV9wZW5kaW5nVGFza3M7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUYXNr
Pj4gbV9wZW5kaW5nVGFza3M7CiAKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBkZDMwZGQwN2MzZDE5MmEzNDIxZGY0MmM3NzRmYzAwNjU4YzMzMGVlLi43Mjk3MDg4MDgx
Y2Q3ODBiYWU0ZDFlNDY1NmJhZThkNmFlYmNlOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01NSwxMSArNTUsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrIDogcHVibGljIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBQcm9jZXNzTWVzc2FnZXNTb29uVGFzayk7Ci0gICAgfQotCiAgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgewogICAgICAgICBjb250ZXh0LT5kaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCk7CkBAIC0x
MjMsNyArMTE4LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnByb2Nlc3NNZXNzYWdlUG9y
dE1lc3NhZ2VzU29vbigpCiB7Ci0gICAgcG9zdFRhc2soUHJvY2Vzc01lc3NhZ2VzU29vblRhc2s6
OmNyZWF0ZSgpKTsKKyAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NNZXNzYWdl
c1Nvb25UYXNrPigpKTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRj
aE1lc3NhZ2VQb3J0RXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCmluZGV4IDg3YjI3ZGRjZWM0ODRjNTNjZWE2ZTcxMDZmMzJhZWNkNzJjNTk2NjMu
Ljk1ODUyMzUxZDg4ZjViZmNlMjExZWZlODcwNWFmZGJlYTlhYmE3MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0
cjxUYXNrPikgPSAwOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFz
eW5jaHJvbm91c2x5LgorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8
VGFzaz4pID0gMDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3lu
Y2hyb25vdXNseS4KIAogICAgIC8vIEdldHMgdGhlIG5leHQgaWQgaW4gYSBjaXJjdWxhciBzZXF1
ZW5jZSBmcm9tIDEgdG8gMl4zMS0xLgogICAgIGludCBjaXJjdWxhclNlcXVlbnRpYWxJRCgpOwpA
QCAtMTU3LDE4ICsxNTcsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENv
bnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBQYXNzT3duUHRyPEFkZENvbnNvbGVNZXNzYWdlVGFzaz4gY3JlYXRlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBZGRDb25zb2xlTWVzc2Fn
ZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwotICAgICAgICB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7Ci0g
ICAgcHJpdmF0ZToKICAgICAgICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAg
ICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAgLCBtX2xldmVsKGxldmVsKQog
ICAgICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZS5pc29sYXRlZENvcHkoKSkKICAgICAgICAg
ewogICAgICAgICB9CisgICAgcHJpdmF0ZToKICAgICAgICAgTWVzc2FnZVNvdXJjZSBtX3NvdXJj
ZTsKICAgICAgICAgTWVzc2FnZUxldmVsIG1fbGV2ZWw7CiAgICAgICAgIFN0cmluZyBtX21lc3Nh
Z2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAppbmRleCBjNjI4NWIxNzE1YmM2
NzJmNWM5ZDg4YjFlOTY0ZDE1MTAxMDEyYWNmLi42ZjVlMmVkMjY4YWYxODIxYWIwZGNkZmYzMzQ0
MjA1OGM0MGZlM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAKQEAgLTQw
LDIzICs0MCwxOCBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBEaXNwYXRjaENhbGxiYWNrVGFzayA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxEaXNwYXRjaENhbGxiYWNrVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U3Ry
aW5nQ2FsbGJhY2s+IGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IERpc3BhdGNoQ2FsbGJhY2tUYXNrKGNhbGxiYWNrLCBkYXRh
KSk7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKQogICAgIHsKICAgICAgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQobV9kYXRh
KTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgRGlzcGF0Y2hDYWxsYmFja1Rhc2soUGFzc1JlZlB0
cjxTdHJpbmdDYWxsYmFjaz4gY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICAgICAg
OiBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICAgICAsIG1fZGF0YShkYXRhKQogICAgIHsKICAg
ICB9CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBtX2NhbGxiYWNrOwog
ICAgIGNvbnN0IFN0cmluZyBtX2RhdGE7CiB9OwpAQCAtNjUsNyArNjAsNyBAQCBwcml2YXRlOgog
CiB2b2lkIFN0cmluZ0NhbGxiYWNrOjpzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICBjb250ZXh0LT5wb3N0
VGFzayhEaXNwYXRjaENhbGxiYWNrVGFzazo6Y3JlYXRlKHRoaXMsIGRhdGEpKTsKKyAgICBjb250
ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERpc3BhdGNoQ2FsbGJhY2tUYXNrPih0aGlz
LCBkYXRhKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBkMTBlZjdlZDIxZmM2
MzliN2MyM2IzM2M5YzI0MzczZjQ0MTc1NjUwLi5hYTI1MTZiZjZmNTQ1MzYxNDM5ZDc1MWMxNDQw
NjdmNDczYjQ0MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiV29ya2VyTG9hZGVy
UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMCwxMiArOTksMTIgQEAgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6fk1haW5UaHJlYWRCcmlkZ2UoKQogewogfQog
Ci12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJl
YWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWFpblRocmVh
ZEJyaWRnZSogdGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+IHJlcXVlc3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBT
dHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0ciwgc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEsIFRocmVhZGFibGVM
b2FkZXJPcHRpb25zIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlcikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRv
RG9jdW1lbnQoY29udGV4dCk7CiAKLSAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0
KFJlc291cmNlUmVxdWVzdDo6YWRvcHQocmVxdWVzdERhdGEpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQoc3RkOjpt
b3ZlKHJlcXVlc3REYXRhKSkpOwogICAgIHJlcXVlc3QtPnNldEhUVFBSZWZlcnJlcihvdXRnb2lu
Z1JlZmVycmVyKTsKICAgICAvLyBGSVhNRTogSWYgdGhlIGEgc2l0ZSByZXF1ZXN0cyBhIGxvY2Fs
IHJlc291cmNlLCB0aGVuIHRoaXMgd2lsbCByZXR1cm4gYSBub24temVybyB2YWx1ZSBidXQgdGhl
IHN5bmMgcGF0aAogICAgIC8vIHdpbGwgcmV0dXJuIGEgMCB2YWx1ZS4gIEVpdGhlciB0aGlzIHNo
b3VsZCByZXR1cm4gMCBvciB0aGUgb3RoZXIgY29kZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxiYWNr
IHdpdGgKQEAgLTE3MywxMCArMTcyLDEwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5CiAgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRTZW5kRGF0YSwgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIG1fdGFza01vZGUpOwogfQog
Ci1zdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVSZXNwb25zZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNwb25zZURhdGEpCitz
dGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVSZXNwb25zZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IHJlc3BvbnNlRGF0YSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSk7Ci0gICAgT3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2U6OmFkb3B0KHJlc3BvbnNlRGF0YSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZVJlc3BvbnNlPiByZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlOjphZG9wdChzdGQ6Om1vdmUocmVz
cG9uc2VEYXRhKSkpOwogICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCAqcmVzcG9uc2UpOwogfQogCkBAIC0xODUsNyArMTg0LDcgQEAgdm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkUmVj
ZWl2ZVJlc3BvbnNlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNl
KSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkUmVj
ZWl2ZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFi
bGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzT3duUHRyPFZl
Y3RvcjxjaGFyPj4gdmVjdG9yRGF0YSkKK3N0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlk
UmVjZWl2ZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPGNoYXI+PiB2ZWN0b3JEYXRhKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCksIHZlY3RvckRhdGEtPnNp
emUoKSk7CkBAIC0xOTMsOSArMTkyLDkgQEAgc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVE
aWRSZWNlaXZlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWYKIAogdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBPd25QdHI8VmVjdG9y
PGNoYXI+PiB2ZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KGRhdGFMZW5ndGgpKTsg
Ly8gbmVlZHMgdG8gYmUgYW4gT3duUHRyIGZvciB1c2FnZSB3aXRoIGNyZWF0ZUNhbGxiYWNrVGFz
ay4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGNoYXI+PiB2ZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxjaGFyPj4oZGF0YUxlbmd0aCk7CiAgICAgbWVtY3B5KHZlY3Rvci0+ZGF0
YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJHbG9iYWxTY29w
ZURpZFJlY2VpdmVEYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHZlY3Rvci5yZWxlYXNlKCkp
LCBtX3Rhc2tNb2RlKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZFJlY2Vp
dmVEYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHN0ZDo6bW92ZSh2ZWN0b3IpLCBtX3Rhc2tN
b2RlKTsKIH0KIAogc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRGaW5pc2hMb2FkaW5n
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBkb3VibGUgZmluaXNoVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IGNjNzIzYjQyMjZiZWZkZDJkY2YxNjIxMTk2ZDM4MzBj
MzFkYTIxOTkuLjhjYjZkZDNhMWZiZjEyYzRjNjRiNzk5MTI1ZmZlYTkxZTYxYmRkMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMzUs
NyArMzUsNiBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTA4LDcgKzEwNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWREZXN0
cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKik7CiAgICAgICAg
ICAgICB+TWFpblRocmVhZEJyaWRnZSgpOwogCi0gICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWlu
VGhyZWFkQ3JlYXRlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJp
ZGdlKiwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+LCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyKTsKKyAgICAg
ICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqLCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPiwgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMsIGNvbnN0IFN0cmlu
ZyYgb3V0Z29pbmdSZWZlcnJlcik7CiAgICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFk
Q2FuY2VsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKik7CiAgICAg
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgT1ZFUlJJREU7CiAg
ICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCBmM2EyMjRlNWJmZDAxZDRjMjljM2E4MWM1N2EwZDRlZjk2Y2EwZjBhLi4zMzk3
ZjFkMzlmMjg2OTEzYTgyNTY1ZmJkMjJiNzViM2YxOTE2MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTExOSwyNSArMTExOSwxOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1
bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKQogCiBjbGFzcyBDYWxsQ2FjaGVMaXN0
ZW5lclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBjcmVhdGUoUGFz
c1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZl
bnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRl
ciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKSk7Ci0gICAgfQotCiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
IE9WRVJSSURFCiAgICAgewotICAgICAgICAKKwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9j
dW1lbnRMb2FkZXItPmZyYW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgCisKICAgICAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpID09IG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogCiAgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUo
bV9ldmVudElELCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKLXBy
aXZhdGU6CiAgICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgaW50IHBy
b2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpCiAgICAgICAgIDogbV9kb2N1bWVudExvYWRl
cihsb2FkZXIpCiAgICAgICAgICwgbV9ldmVudElEKGV2ZW50SUQpCkBAIC0xMTQ2LDYgKzExNDAs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRyPERvY3Vt
ZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVyOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpF
dmVudElEIG1fZXZlbnRJRDsKICAgICBpbnQgbV9wcm9ncmVzc1RvdGFsOwpAQCAtMTE2Nyw3ICsx
MTYyLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soQXBw
bGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnQKICAgICAKICAgICBBU1NFUlQoZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gbG9hZGVyKTsKIAotICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5wb3N0VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2
ZW50SUQsIHByb2dyZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOworICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPENhbGxDYWNoZUxpc3RlbmVyVGFzaz4obG9h
ZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldFVwZGF0ZVN0YXR1cyhVcGRhdGVTdGF0dXMgc3RhdHVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNjUy
NDIyY2Y2NDc4MmJhNTYyM2Q2YmVhMzhjZjQwYmExNWJjY2ZjOC4uZWY3MDYwZDlkMGUxYmRkNmRl
Y2U2NDRmZjAyNWM5NGRjYjI1MzJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCkBAIC04MjUsOSArODI1LDkgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVt
b3ZlUmVxdWVzdEZyb21DYWNoZUltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJl
c28KICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlKTsKIH0KIAotdm9pZCBN
ZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8V2ViQ29yZTo6Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSkKK3ZvaWQgTWVtb3J5Q2FjaGU6OmNyb3NzVGhy
ZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0
RGF0YSkKIHsKLSAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVx
dWVzdDo6YWRvcHQocmVxdWVzdERhdGEpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VS
ZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQoc3RkOjptb3ZlKHJlcXVlc3RE
YXRhKSkpOwogICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbUNhY2hlSW1wbChjb250
ZXh0LCAqcmVxdWVzdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgKaW5kZXggYzAyM2E5NzI1ODMyNzljZDQ4MDFjZGVjZWNjYWEzYTU3MTU5NDk5Zi4uNmM3
MTE4N2NmMjBjNGEyNDhhZDBlM2Y4NmMyZDczYjcwNTcxZDA1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZXZpY3QoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbW92
ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RG
cm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPik7CisgICAgc3RhdGljIHZvaWQgY3Jvc3NUaHJlYWRSZW1vdmVS
ZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CiAKICAgICBib29sIG1fZGlzYWJsZWQ7
ICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgY2FjaGUgaXMgZW5hYmxlZC4KICAgICBib29sIG1fcHJ1
bmVFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwCmluZGV4IDA0M2VkMGY3YTBhMGU0ZmMyNWJlZmM2ZTM3MmZjMjk1ZTYxMmU2OGYuLjRlNzZk
ZTkwNzA3NjQzNjBjODFlM2FlMDVjNjk5MTY5Mzk0M2I0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKQEAgLTE0NSwxOCArMTQ1LDExIEBAIENP
TVBJTEVfQVNTRVJUKChzdGQ6OmlzX3NhbWU8CiAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSks
CiAgICAgICAgICAgICAgICBSYXdQb2ludGVyUmVmQ291bnRlZFRlc3QpOwogCi0vLyBWZXJpZnkg
dGhhdCBQYXNzT3duUHRyIGdldHMgcGFzc2VkIHRocm91Z2guCisvLyBWZXJpZnkgdGhhdCBzdGQ6
OnVuaXF1ZV9wdHIgZ2V0cyBwYXNzZWQgdGhyb3VnaC4KIENPTVBJTEVfQVNTRVJUKChzdGQ6Omlz
X3NhbWU8Ci0gICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPGZsb2F0PiwKLSAgICAgICAgICAg
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFBhc3NPd25QdHI8ZmxvYXQ+Pjo6VHlwZQorICAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPHN0ZDo6dW5pcXVlX3B0cjxmbG9hdD4+OjpUeXBlCiAgICAgICAgICAg
ICAgICAgICA+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICBQYXNzT3duUHRyVGVzdCk7Ci0KLS8v
IFZlcmlmeSB0aGF0IFBhc3NPd25QdHIgZG9lcyBub3QgZ2V0IHBhc3NlZCB0aHJvdWdoLgotQ09N
UElMRV9BU1NFUlQoKHN0ZDo6aXNfc2FtZTwKLSAgICAgICAgICAgICAgICAgIGludCwKLSAgICAg
ICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPE93blB0cjxmbG9hdD4+OjpUeXBlCi0gICAg
ICAgICAgICAgICAgICA+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICBPd25QdHJUZXN0KTsKKyAg
ICAgICAgICAgICAgIFVuaXF1ZVB0clRlc3QpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCAwZmIwNjlj
YzgzMDZkZDNmMjVlOTBjZmViYWRmNWY0N2M2NGY0MGZiLi4xMDZlMDM5NTI5Y2U0OWM2MDIwNzdi
YWJmNzg2NjY1ZGZhY2Q2MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTExMiwxMSArMTExLDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgUGFzc093blB0cjxU
Pj4gewotICAgICAgICB0eXBlZGVmIFBhc3NPd25QdHI8VD4gVHlwZTsKLSAgICAgICAgc3RhdGlj
IFR5cGUgY29weShUeXBlIG93blB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgc3RkOjp1bmlxdWVfcHRyPFQ+PiB7
CisgICAgICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFQ+IFR5cGU7CisgICAgICAgIHN0YXRp
YyBUeXBlIGNvcHkoVHlwZSB1bmlxdWVQdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBvd25QdHI7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFR5cGU+KHVuaXF1ZVB0
cik7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xMzYsMTIgKzEzNSwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29w
aWVyQmFzZTxmYWxzZSwgZmFsc2UsIFJlc291cmNlUmVxdWVzdD4gewotICAgICAgICB0eXBlZGVm
IFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBUeXBlOworICAgICAg
ICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+
IFR5cGU7CiAgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxm
YWxzZSwgZmFsc2UsIFJlc291cmNlUmVzcG9uc2U+IHsKLSAgICAgICAgdHlwZWRlZiBQYXNzT3du
UHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFR5cGU7CisgICAgICAgIHR5cGVk
ZWYgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFR5cGU7
CiAgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuY3BwCmluZGV4IGE0NTkzYjVlMmVjNDM2NjBjOGJlNjFkYzhhZjhkNGQzZjBlMjQzZDAuLmZm
OWY5ZmIyY2FkYWMwNTFjOWQxNjM4MzlmMjZmYjE5MTEyYjM5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApAQCAtNDMsMTkgKzQz
LDE5IEBAIEhUVFBIZWFkZXJNYXA6On5IVFRQSGVhZGVyTWFwKCkKIHsKIH0KIAotUGFzc093blB0
cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQSGVhZGVyTWFwOjpjb3B5RGF0YSgp
IGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gSFRU
UEhlYWRlck1hcDo6Y29weURhdGEoKSBjb25zdAogewotICAgIE93blB0cjxDcm9zc1RocmVhZEhU
VFBIZWFkZXJNYXBEYXRhPiBkYXRhID0gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkSFRUUEhlYWRl
ck1hcERhdGEoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERh
dGE+KCk7CiAgICAgZGF0YS0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwogCiAgICAg
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kX2l0ID0gZW5kKCk7CiAgICAgZm9yIChI
VFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGJlZ2luKCk7IGl0ICE9IGVuZF9pdDsg
KytpdCkKICAgICAgICAgZGF0YS0+dW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGl0LT5r
ZXkuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCksIGl0LT52YWx1ZS5pc29sYXRlZENvcHkoKSkpOwog
Ci0gICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBzdGQ6Om1vdmUoZGF0YSk7
CiB9CiAKLXZvaWQgSFRUUEhlYWRlck1hcDo6YWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZEhU
VFBIZWFkZXJNYXBEYXRhPiBkYXRhKQordm9pZCBIVFRQSGVhZGVyTWFwOjphZG9wdChzdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YSkKIHsKICAgICBjbGVh
cigpOwogICAgIHNpemVfdCBkYXRhU2l6ZSA9IGRhdGEtPnNpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggZjRlNjc4NzQ3YWRj
MjdjZmQwYmU4MzJiMjdkN2U1OWI3NDJmMmE2NC4uOWU4ZDdmYzJjZmVjMzE3YzQ2NWNlMjM5Zjcw
OTY4ZDRjMTM3ODllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTWFwLmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPHV0aWxpdHk+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CkBAIC00NiwxMCArNDUsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB+SFRUUEhlYWRlck1hcCgpOwogCiAgICAg
ICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFu
b3RoZXIgdGhyZWFkLgotICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBjb3B5RGF0YSgpIGNvbnN0OworCisgICAgICAgIHZvaWQg
YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+KTsKIAot
ICAgICAgICB2b2lkIGFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0
YT4pOwotICAgICAgICAKICAgICAgICAgU3RyaW5nIGdldChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0OwogCiAgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKQEAgLTU4LDcgKzU3LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKICAgICAg
ICAgU3RyaW5nIGdldChjb25zdCBjaGFyKikgY29uc3Q7CiAgICAgICAgIEFkZFJlc3VsdCBhZGQo
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgICAgIAogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGVmNDIxOTM0MzU0
NzllN2I5ZGNhYjQ0OTNhOWQ0YzhkNTA4MjYyZjEuLmJmMmUxMTI0ZDA3OTJmYzFjOTRiZjY2YTMy
NmMwMzE0NGZkNjUxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNDMsOSArNDMsOSBAQCBpbmxpbmUg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphc1Jlc291cmNlUmVx
dWVzdCgpIGNvbnN0CiAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlcXVl
c3QqPih0aGlzKTsKIH0KIAotUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVx
dWVzdEJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
PiBkYXRhKQorc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0
YT4gZGF0YSkKIHsKLSAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRQ
dHIobmV3IFJlc291cmNlUmVxdWVzdCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VS
ZXF1ZXN0PiByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KCk7CiAg
ICAgcmVxdWVzdC0+c2V0VVJMKGRhdGEtPm1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRDYWNoZVBv
bGljeShkYXRhLT5tX2NhY2hlUG9saWN5KTsKICAgICByZXF1ZXN0LT5zZXRUaW1lb3V0SW50ZXJ2
YWwoZGF0YS0+bV90aW1lb3V0SW50ZXJ2YWwpOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNzT3duUHRy
PFJlc291cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoUGFzc093blB0cjxD
cm9zc1RocmVhZFJlcwogICAgIHJlcXVlc3QtPnNldFByaW9yaXR5KGRhdGEtPm1fcHJpb3JpdHkp
OwogCiAgICAgcmVxdWVzdC0+dXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgcmVxdWVzdC0+
bV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKTsK
KyAgICByZXF1ZXN0LT5tX2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQoc3RkOjptb3ZlKGRhdGEtPm1f
aHR0cEhlYWRlcnMpKTsKIAogICAgIHNpemVfdCBlbmNvZGluZ0NvdW50ID0gZGF0YS0+bV9yZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAg
aWYgKGVuY29kaW5nQ291bnQgPiAwKSB7CkBAIC03MSwxMyArNzEsMTMgQEAgUGFzc093blB0cjxS
ZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jv
c3NUaHJlYWRSZXMKICAgICB9CiAgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHkoZGF0YS0+bV9odHRw
Qm9keSk7CiAgICAgcmVxdWVzdC0+c2V0QWxsb3dDb29raWVzKGRhdGEtPm1fYWxsb3dDb29raWVz
KTsKLSAgICByZXF1ZXN0LT5kb1BsYXRmb3JtQWRvcHQoZGF0YSk7Ci0gICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOworICAgIHJlcXVlc3QtPmRvUGxhdGZvcm1BZG9wdChzdGQ6Om1vdmUoZGF0
YSkpOworICAgIHJldHVybiBzdGQ6Om1vdmUocmVxdWVzdCk7CiB9CiAKLVBhc3NPd25QdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0
YSgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
PiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSgpIGNvbnN0CiB7Ci0gICAgT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSA9IGFkb3B0UHRyKG5ldyBDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGEoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhPigpOwogICAgIGRhdGEtPm1fdXJsID0gdXJsKCkuY29weSgp
OwogICAgIGRhdGEtPm1fY2FjaGVQb2xpY3kgPSBjYWNoZVBvbGljeSgpOwogICAgIGRhdGEtPm1f
dGltZW91dEludGVydmFsID0gdGltZW91dEludGVydmFsKCk7CkBAIC05NCw3ICs5NCw3IEBAIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgaWYgKG1faHR0cEJvZHkpCiAgICAgICAgIGRhdGEt
Pm1faHR0cEJvZHkgPSBtX2h0dHBCb2R5LT5kZWVwQ29weSgpOwogICAgIGRhdGEtPm1fYWxsb3dD
b29raWVzID0gbV9hbGxvd0Nvb2tpZXM7Ci0gICAgcmV0dXJuIGFzUmVzb3VyY2VSZXF1ZXN0KCku
ZG9QbGF0Zm9ybUNvcHlEYXRhKGRhdGEucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gYXNSZXNvdXJj
ZVJlcXVlc3QoKS5kb1BsYXRmb3JtQ29weURhdGEoc3RkOjptb3ZlKGRhdGEpKTsKIH0KIAogYm9v
bCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0VtcHR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggMTQw
NTdjYjI3ZjRmODIzZTU5YWJjNDJhODgwZjg0MDFjNWU1YTBiOS4uMTc2N2M0ZjUwY2NhNDEzMzkx
Mjg2YWRiZDI1NWM1MWNjMWFkZGViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTMzLDggKzMzLDYgQEAKICNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogCi0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBlbnVtIFJl
c291cmNlUmVxdWVzdENhY2hlUG9saWN5IHsKQEAgLTU2LDEwICs1NCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiAgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8UmVzb3VyY2VSZXF1ZXN0PiBhZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4pOworICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVx
dWVzdD4gYWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0
YT4pOwogCiAgICAgICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZvciBw
YXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgotICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFk
UmVzb3VyY2VSZXF1ZXN0RGF0YT4gY29weURhdGEoKSBjb25zdDsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gY29weURhdGEoKSBjb25zdDsK
IAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKQEAgLTIyMiw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFVS
TCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOwogCiAgICAgICAgIFN0cmluZyBtX2h0dHBNZXRob2Q7
Ci0gICAgICAgIE93blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFk
ZXJzOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0
YT4gbV9odHRwSGVhZGVyczsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICAgICAgUmVmUHRyPEZvcm1E
YXRhPiBtX2h0dHBCb2R5OwogICAgICAgICBib29sIG1fYWxsb3dDb29raWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcAppbmRleCA4MTdhYThmNmRhNzAxMTc4ZjMxZWY3Y2YzYmQwN2MwMzgzMDcwMGI3Li4zYTEx
MTgyZGUzNmFiYTNiOTlmYTVmMjA0NzBmYjA0YzE0ZTE4NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApA
QCAtOTIsOSArOTIsOSBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogewogfQogCi1QYXNzT3du
UHRyPFJlc291cmNlUmVzcG9uc2U+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9wdChQYXNzT3du
UHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpCitzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VSZXNwb25zZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKQogewotICAgIE93
blB0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0UHRyKG5ldyBSZXNvdXJjZVJl
c3BvbnNlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXNwb25zZT4gcmVzcG9uc2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KCk7CiAgICAgcmVzcG9uc2UtPnNl
dFVSTChkYXRhLT5tX3VybCk7CiAgICAgcmVzcG9uc2UtPnNldE1pbWVUeXBlKGRhdGEtPm1fbWlt
ZVR5cGUpOwogICAgIHJlc3BvbnNlLT5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZGF0YS0+bV9l
eHBlY3RlZENvbnRlbnRMZW5ndGgpOwpAQCAtMTA1LDE1ICsxMDUsMTUgQEAgUGFzc093blB0cjxS
ZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQoUGFzc093blB0cjxD
cm9zc1RocmVhZFIKICAgICByZXNwb25zZS0+c2V0SFRUUFN0YXR1c1RleHQoZGF0YS0+bV9odHRw
U3RhdHVzVGV4dCk7CiAKICAgICByZXNwb25zZS0+bGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25G
aWVsZHMpOwotICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQoZGF0YS0+bV9o
dHRwSGVhZGVycy5yZWxlYXNlKCkpOworICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVsZHMu
YWRvcHQoc3RkOjptb3ZlKGRhdGEtPm1faHR0cEhlYWRlcnMpKTsKICAgICByZXNwb25zZS0+c2V0
UmVzb3VyY2VMb2FkVGltaW5nKGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5nLnJlbGVhc2UoKSk7
Ci0gICAgcmVzcG9uc2UtPmRvUGxhdGZvcm1BZG9wdChkYXRhKTsKLSAgICByZXR1cm4gcmVzcG9u
c2UucmVsZWFzZSgpOworICAgIHJlc3BvbnNlLT5kb1BsYXRmb3JtQWRvcHQoc3RkOjptb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gc3RkOjptb3ZlKHJlc3BvbnNlKTsKIH0KIAotUGFzc093blB0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29w
eURhdGEoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25z
ZURhdGE+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSgpIGNvbnN0CiB7Ci0gICAgT3du
UHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEgPSBhZG9wdFB0cihuZXcg
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KCk7CiAgICAgZGF0YS0+bV91cmwgPSB1cmwo
KS5jb3B5KCk7CiAgICAgZGF0YS0+bV9taW1lVHlwZSA9IG1pbWVUeXBlKCkuaXNvbGF0ZWRDb3B5
KCk7CiAgICAgZGF0YS0+bV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRM
ZW5ndGgoKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSgpIGNvbgogICAg
IGRhdGEtPm1faHR0cEhlYWRlcnMgPSBodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKTsKICAg
ICBpZiAobV9yZXNvdXJjZUxvYWRUaW1pbmcpCiAgICAgICAgIGRhdGEtPm1fcmVzb3VyY2VMb2Fk
VGltaW5nID0gbV9yZXNvdXJjZUxvYWRUaW1pbmctPmRlZXBDb3B5KCk7Ci0gICAgcmV0dXJuIGFz
UmVzb3VyY2VSZXNwb25zZSgpLmRvUGxhdGZvcm1Db3B5RGF0YShkYXRhLnJlbGVhc2UoKSk7Cisg
ICAgcmV0dXJuIGFzUmVzb3VyY2VSZXNwb25zZSgpLmRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6Om1v
dmUoZGF0YSkpOwogfQogCiBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0hUVFAoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCmluZGV4IDJjZmI1M2E5MzdmYjRhYjdmYTZiODZiNDc5NmJiODZlMjRlYjdl
YjMuLjQzNzg3Y2MyYjA4OGE0Mzc4NTRiNmZiZjQ3OGY2NDU5NDIwNzM5ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRUaW1pbmcuaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiAjaWYgT1MoU09MQVJJUykKQEAgLTQ3LDEwICs0NiwxMCBAQCBzdHJ1
Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YTsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2VCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBhZG9wdChQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlUmVzcG9uc2U+IGFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVzcG9uc2VEYXRhPik7CiAKICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJs
ZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KLSAgICBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGNvcHlEYXRhKCkgY29uc3Q7
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CiAgICAgYm9v
bCBpc0hUVFAoKSBjb25zdDsKQEAgLTE5MSw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgU3Ry
aW5nIG1faHR0cFN0YXR1c1RleHQ7Ci0gICAgT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IG1faHR0cEhlYWRlcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkSFRU
UEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7CiAgICAgUmVmUHRyPFJlc291cmNlTG9hZFRp
bWluZz4gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2Y2YyNmFiNGMz
ZWY4NGEwNGNlY2U4ZmFkZTk4ZDdkOGNhMjM1ZDcyLi44YmJhZDM2NThiODQxOWJkODFiMDg2OGNm
MGM3OGRiY2UwMDc2ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTExNyw4ICsxMTcsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCk7CiAgICAg
ICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCk7CiAKLSAgICAgICAgUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIGNvbnN0OwotICAgICAgICB2
b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4pOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pIGNvbnN0OworICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CiAKICNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBtX2NmUmVx
dWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggNjhmYmJmYWY5YjI0N2ViNzFjNjNhZmNk
NmQwNWRjMDdmZDk1ZTM4NS4uOTIzODk2ZWU0NThjODcyMWZiOWVlNDE0ZmJjZTBiMDg1MGVjMWFh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTM0MCwxNSArMzQwLDE1IEBAIFN0cmluZyBS
ZXNvdXJjZVJlcXVlc3Q6OnBhcnRpdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBkb21haW4pCiB9CiAj
ZW5kaWYKIAotUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJlc291
cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFk
UmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQ29weURhdGEo
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29u
c3QKIHsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIGRhdGEtPm1fY2FjaGVQ
YXJ0aXRpb24gPSBtX2NhY2hlUGFydGl0aW9uOwogI2VuZGlmCi0gICAgcmV0dXJuIGRhdGE7Cisg
ICAgcmV0dXJuIHN0ZDo6bW92ZShkYXRhKTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
UGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4g
ZGF0YSkKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkKIHsKICNpZiBFTkFCTEUo
Q0FDSEVfUEFSVElUSU9OSU5HKQogICAgIG1fY2FjaGVQYXJ0aXRpb24gPSBkYXRhLT5tX2NhY2hl
UGFydGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCAxM2E1ODExODBlYTY4OGRkZTM3NmUzNWYwN2UyZWUz
MTYzOGFkMzVlLi4wNmM0MDhiOWU2ZDBlZGNmODc2ZDRlMGRkMTUwMzllZTIzNWU4MTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtMTAzLDggKzEwMyw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJl
c291cmNlUmVzcG9uc2VCYXNlOwogCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZl
bCk7Ci0gICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1Bs
YXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRh
PiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQo
UGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1D
b3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4g
ZGF0YSkgY29uc3QgeyByZXR1cm4gc3RkOjptb3ZlKGRhdGEpOyB9CisgICAgdm9pZCBkb1BsYXRm
b3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+
KSB7IH0KICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbml0TlNVUkxSZXNwb25zZSgpIGNv
bnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggYTc1YTcxYWY4MDgyOTI3MmQyNmI5ZThlNjlk
MzNjY2ExYjkwMTQwMi4uMzhlYWYyMDg3MjNkOWU4ZWYwYTFmZTcyOTJmYjY2NDBlMGViZWY0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZVJlcXVlc3QuaApAQCAtNzgsOCArNzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CiAgICAgICAgIHZvaWQgZG9V
cGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKLSAgICAgICAgUGFzc093blB0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsg
fQotICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gc3Rk
Ojptb3ZlKGRhdGEpOyB9CisgICAgICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KICAKICAgICAgICAgc3Rh
dGljIGJvb2wgc19odHRwUGlwZWxpbmluZ0VuYWJsZWQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCmlu
ZGV4IGFlMDliODE0ZmIwMTE1YTE2ODljZDI3ZWE5YzU4YWZmOGVlNzBmMDEuLjg5OGZlNDExZjll
MGYzOWNiOWM4ZTU4NDE0MjMwNWFjZmNmZWU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNTYsOCAr
NTYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTsKIAotICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZvaWQgZG9QbGF0Zm9y
bUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1Bs
YXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25z
ZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bW92ZShkYXRhKTsgfQorICAgIHZvaWQg
ZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhPikgeyB9CiAKICAgICBib29sIG1fcmVzcG9uc2VGaXJlZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgK
aW5kZXggY2YyMjZjMTkwYzUzOTI4MWE3ZGRkYmJiYjMzYzNmNmJlZDczYTA0Zi4uOWYwN2JlNTli
MGJkYjViYjFhZWEyZjY0YTgyYWRmYjNiZjJiMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtOTksOCAr
OTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9y
bUhUVFBCb2R5KCkgeyB9CiAgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkg
eyB9CiAKLSAgICAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+
IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgICAgICB2b2lkIGRvUGxhdGZv
cm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBk
b1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1
ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gc3RkOjptb3ZlKGRhdGEpOyB9CisgICAgICAg
IHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+KSB7IH0KICAgICB9OwogCiAgICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXF1ZXN0RGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXNwb25zZS5oCmluZGV4IDQ4OTFmOTM1ZmNiYzdmNzcyM2E2NjE1N2VlMmVkOTMzY2Y1
M2UwZjcuLjFhODFiN2E2NzRiMDEzNDZlMjBmZGI3Yzg5ZGU4MTAzM2Y2Mzk3MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtODUsOCArODUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1VwZGF0ZVJl
c291cmNlUmVzcG9uc2UoKSB7IH0KIAotICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZv
aWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YT4pIHsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bW92ZShkYXRhKTsg
fQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiB9OwogCiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNv
dXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291
cmNlUmVxdWVzdC5oCmluZGV4IGQxZWI3ZDU0YzA3MjY4Yjk4MmQyOWUxMWIxMWY2NmU3ODk3MzM4
NjcuLmYzMDA2YzZhODQ4ZDI4ZDAyY2JjMDhiNDgzYjNmODY0MTdjNTk4NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5o
CkBAIC02MSw4ICs2MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRU
UEJvZHkoKSB7IH0KICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpIHsgfQogCi0g
ICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1D
b3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkg
Y29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CisgICAgc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bW92ZShkYXRhKTsgfQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KIH07CiAK
IHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggYmVjMGUwNDNjYTYz
Y2QzN2VkY2M1MmI2NWFjNDBhOGFjNjYyODFiNS4uZGVlOWQ4YWU1YWU2ZmUzYThhMjA2MTc1MTg3
MzM2MTY1MmMzZWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay93aW4vUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKIAotICAgIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlE
YXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29u
c3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bW92ZShkYXRhKTsgfQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiB9Owog
CiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IHB1YmxpYyBDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IGQyODA3
MDVlYjQ4NzE2NThkODMzZTE1YzBjMmYxMzgzZjg2Y2ZmYjAuLmE3MWY5Nzk5YzZhOGIyZDM0M2M4
YzE0MTViMGY5NGExMjVmNjkzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC03OSw4ICs3OSw4IEBA
IHB1YmxpYzoKICAgICBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsVG9NYXRjaCkgY29uc3Q7CiAK
ICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9h
ZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwotICAgIHZpcnR1
YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPik7CisgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdvcmtlclJlcG9ydGluZ1Byb3h5CiAgICAgdmlydHVh
bCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIFNoYXJlZFdvcmtlclByb3h5OjptYXRj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gbwogICAg
IHJldHVybiBuYW1lID09IG1fbmFtZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9z
dFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRh
c2spCit2b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVl
X3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIE11dGV4TG9j
a2VyIGxvY2sobV93b3JrZXJEb2N1bWVudHNMb2NrKTsKIApAQCAtMTUyLDE1ICsxNTIsMTUgQEAg
dm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sKICAgICAvLyBKdXN0IHBpY2sgYW4gYXJiaXRyYXJ5IGFj
dGl2ZSBkb2N1bWVudCBmcm9tIHRoZSBIYXNoU2V0IGFuZCBwYXNzIGxvYWQgcmVxdWVzdHMgdG8g
aXQuCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJl
IHRoZSB1c2VyIGNsb3NlcyB0aGUgZG9jdW1lbnQgbWlkLWxvYWQsIHZpYSBhIHNoYWRvdyBkb2N1
bWVudCBvciBzb21lIG90aGVyIHNvbHV0aW9uPwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICoo
bV93b3JrZXJEb2N1bWVudHMuYmVnaW4oKSk7Ci0gICAgZG9jdW1lbnQtPnBvc3RUYXNrKHRhc2sp
OworICAgIGRvY3VtZW50LT5wb3N0VGFzayhzdGQ6Om1vdmUodGFzaykpOwogfQogCi1ib29sIFNo
YXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NP
d25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBt
b2RlKQorYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFz
aywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChpc0Nsb3NpbmcoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIEFTU0VSVChtX3RocmVhZCk7Ci0gICAgbV90aHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUodGFzaywgbW9kZSk7CisgICAgbV90aHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFza0Zvck1vZGUoc3RkOjptb3ZlKHRhc2spLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMjUzLDE3ICsyNTMsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6Y2xv
c2UoKQogCiBjbGFzcyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTaGFy
ZWRXb3JrZXJDb25uZWN0VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
PiBjaGFubmVsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaGFyZWRXb3Jr
ZXJDb25uZWN0VGFzayhjaGFubmVsKSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIFNoYXJlZFdv
cmtlckNvbm5lY3RUYXNrKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQog
ICAgICAgICA6IG1fY2hhbm5lbChjaGFubmVsKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dENvbnRleHQpCiAgICAgewogICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNz
YWdlUG9ydDo6Y3JlYXRlKCpzY3JpcHRDb250ZXh0KTsKQEAgLTM2NCw3ICszNTksNyBAQCB2b2lk
IERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojp3b3JrZXJTY3JpcHRMb2FkZWQoU2hhcmVk
V29ya2VyUHJveHkmIHByb3h5LAogICAgICAgICBwcm94eS5zZXRUaHJlYWQodGhyZWFkKTsKICAg
ICAgICAgdGhyZWFkLT5zdGFydCgpOwogICAgIH0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9v
cCgpLnBvc3RUYXNrKFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUocG9ydCkpOworICAg
IHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxTaGFy
ZWRXb3JrZXJDb25uZWN0VGFzaz4ocG9ydCkpOwogfQogCiBib29sIERlZmF1bHRTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3JrZXJzKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTQx
Miw3ICs0MDcsNyBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0
VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcgogICAgIH0KICAgICAvLyBJZiBw
cm94eSBpcyBhbHJlYWR5IHJ1bm5pbmcsIGp1c3QgY29ubmVjdCB0byBpdCAtIG90aGVyd2lzZSwg
a2ljayBvZmYgYSBsb2FkZXIgdG8gbG9hZCB0aGUgc2NyaXB0LgogICAgIGlmIChwcm94eS0+dGhy
ZWFkKCkpCi0gICAgICAgIHByb3h5LT50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFNoYXJl
ZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUocG9ydCkpOworICAgICAgICBwcm94eS0+dGhyZWFk
KCktPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNoYXJlZFdvcmtlckNvbm5l
Y3RUYXNrPihwb3J0KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIod29ya2VyLCBwb3J0LCBwcm94eS5yZWxlYXNlKCkpKTsKICAgICAgICAgbG9hZGVyLT5sb2Fk
KHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAppbmRl
eCAwY2M0Nzg5YjMwNmQ5YjE0OGE5Y2QyMTc0N2UwODkyMTViOTU4NjM3Li40OTc1MGZhZDYxNTI4
YzkzM2VlOTdmMWY3YzA2NzliZDVmNjJlYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5jcHAKQEAgLTQ4LDExICs0OCw2IEBAIFdvcmtlckV2ZW50UXVldWU6
On5Xb3JrZXJFdmVudFF1ZXVlKCkKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNw
YXRjaGVyVGFzayBGSU5BTCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERpc3BhdGNoZXJUYXNrPiBjcmVh
dGUoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGlzcGF0Y2hlclRhc2so
ZXZlbnQsIGV2ZW50UXVldWUpKTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIH5FdmVudERpc3BhdGNo
ZXJUYXNrKCkKICAgICB7CiAgICAgICAgIGlmIChtX2V2ZW50KQpAQCAtNzksNyArNzQsNiBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZXZlbnQuY2xlYXIoKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAg
RXZlbnREaXNwYXRjaGVyVGFzayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZlbnRR
dWV1ZSYgZXZlbnRRdWV1ZSkKICAgICAgICAgOiBtX2V2ZW50KGV2ZW50KQogICAgICAgICAsIG1f
ZXZlbnRRdWV1ZShldmVudFF1ZXVlKQpAQCAtODcsNiArODEsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICB9CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OwogICAgIFdvcmtl
ckV2ZW50UXVldWUmIG1fZXZlbnRRdWV1ZTsKICAgICBib29sIG1faXNDYW5jZWxsZWQ7CkBAIC05
Nyw5ICs5Miw5IEBAIGJvb2wgV29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OwotICAgIE93blB0cjxF
dmVudERpc3BhdGNoZXJUYXNrPiB0YXNrID0gRXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKGV2
ZW50LCAqdGhpcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50RGlzcGF0Y2hlclRhc2s+IHRh
c2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50RGlzcGF0Y2hlclRhc2s+KGV2ZW50LCAqdGhpcyk7
CiAgICAgbV9ldmVudFRhc2tNYXAuYWRkKGV2ZW50LnJlbGVhc2UoKSwgdGFzay5nZXQoKSk7Ci0g
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCBmY2JmNjQ3NjVjZWMyOTBlZmMxZmEwYTMxYTFjYjIzYThkNDJjMmVk
Li43MTYwOTk4MTVjZTA3MWZlYTk0NDcwMmQ1NDZjZTBlNjAyMWQwZDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjUsMTEgKzY1LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzayA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzaz4gY3JlYXRlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2sp
OwotICAgIH0KLQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0ICpjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKQEAgLTE1MCw3ICsxNDUs
NyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbG9zZSgpCiAgICAgLy8gQWZ0ZXIgbV9jbG9z
aW5nIGlzIHNldCwgYWxsIHRoZSB0YXNrcyBpbiB0aGUgcXVldWUgY29udGludWUgdG8gYmUgZmV0
Y2hlZCBidXQgb25seQogICAgIC8vIHRhc2tzIHdpdGggaXNDbGVhbnVwVGFzaygpPT10cnVlIHdp
bGwgYmUgZXhlY3V0ZWQuCiAgICAgbV9jbG9zaW5nID0gdHJ1ZTsKLSAgICBwb3N0VGFzayhDbG9z
ZVdvcmtlckdsb2JhbFNjb3BlVGFzazo6Y3JlYXRlKCkpOworICAgIHBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8Q2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2s+KCkpOwogfQogCiBXb3JrZXJOYXZp
Z2F0b3IqIFdvcmtlckdsb2JhbFNjb3BlOjpuYXZpZ2F0b3IoKSBjb25zdApAQCAtMTc3LDkgKzE3
Miw5IEBAIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0VGFz
ayhQYXNzT3duUHRyPFRhc2s+IHRhc2spCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0VGFz
ayhzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gdGFzaykKIHsKLSAgICB0aHJlYWQoKS0+cnVuTG9vcCgp
LnBvc3RUYXNrKHRhc2spOworICAgIHRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjpt
b3ZlKHRhc2spKTsKIH0KIAogaW50IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KFBhc3NP
d25QdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0KQpAQCAtMjYyLDcgKzI1
Nyw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikK
IHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENv
bnNvbGVNZXNzYWdlVGFzazo6Y3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAg
ICAgcG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxBZGRDb25zb2xlTWVzc2FnZVRhc2s+KHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjczLDcg
KzI2OCw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2CiB2b2lkIFdvcmtlckdsb2JhbFNjb3Bl
OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAg
cG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrOjpjcmVhdGUoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSkpOworICAgICAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFkZENvbnNvbGVNZXNz
YWdlVGFzaz4oc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggNTk0
MTdiNjlmYTgwZDUxN2IxMGIzY2U4MmQ5OGU1YTc4NjAyOGYyMS4uMjg4YWYyZDQ4YjI5NWM3MDYx
NDFhYTFmOTYzZGJkNmU2ZGQzMTliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPikgT1ZFUlJJREU7IC8vIEV4ZWN1dGVzIHRo
ZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4pIG92ZXJyaWRlOyAvLyBFeGVj
dXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAgICAg
ICAgIC8vIFdvcmtlckdsb2JhbFNjb3BlCiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiBzZWxm
KCkgeyByZXR1cm4gdGhpczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJMb2FkZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCmluZGV4IDYyOTMxMjQ4ZDcxODc5ZDUzZjQyZTBhMjZhNWMzNzJiMTBlMDk5OWYuLmY0
ZWY4ZjljZjM1YjYwNTMyNTliYjY5ZDg5M2M5NWM1MzU3YTViNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKQEAgLTQ3LDEyICs0NywxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfldvcmtlckxvYWRlclByb3h5KCkgeyB9CiAK
ICAgICAgICAgLy8gUG9zdHMgYSB0YXNrIHRvIHRoZSB0aHJlYWQgd2hpY2ggcnVucyB0aGUgbG9h
ZGluZyBjb2RlIChub3JtYWxseSwgdGhlIG1haW4gdGhyZWFkKS4KLSAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVu
aXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pID0gMDsKIAogICAgICAgICAv
LyBQb3N0cyBjYWxsYmFja3MgZnJvbSBsb2FkaW5nIGNvZGUgdG8gdGhlIFdvcmtlckdsb2JhbFNj
b3BlLiBUaGUgJ21vZGUnIGlzIHVzZWQgdG8gZGlmZmVyZW50aWF0ZQogICAgICAgICAvLyBzcGVj
aWZpYyBzeW5jaHJvbm91cyBsb2FkaW5nIHJlcXVlc3RzIHNvIHRoZXkgY2FuIGJlICduZXN0ZWQn
LCBwZXIgc3BlYy4KICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB0YXNrIHdhcyBwb3N0
ZWQgc3VjY2Vzc2Z1bGx5LgotICAgICAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
LCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwCmluZGV4IDAxOTZmMDJmYzlkZjQ4MDQ0ZmM1NDk0NjdiNGE5MmEwOTFj
MWJiOGUuLmM4NTc0NzUyYmFlMDEyMTZkM2RkYzhhMGU3OTU3YzNlNGQxOTRhYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01NCwx
OCArNTQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNzYWdlV29ya2VyR2xv
YmFsU2NvcGVUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2sobWVzc2FnZSwg
Y2hhbm5lbHMpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgTWVzc2FnZVdvcmtlckdsb2JhbFNj
b3BlVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCiAgICAgICAgIDogbV9tZXNz
YWdlKG1lc3NhZ2UpCiAgICAgICAgICwgbV9jaGFubmVscyhjaGFubmVscykKICAgICB7CiAgICAg
fQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
QEAgLTgyLDEyICs3Nyw2IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJUYXNrKG1lc3NhZ2Us
IGNoYW5uZWxzLCBtZXNzYWdpbmdQcm94eSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBNZXNz
YWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkK
ICAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQpAQCAtOTUsNiArODQsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQpCiAgICAgewogICAgICAgICBX
b3JrZXIqIHdvcmtlck9iamVjdCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgpOwpA
QCAtMTEzLDEyICsxMDMsNiBAQCBwcml2YXRlOgogCiBjbGFzcyBXb3JrZXJFeGNlcHRpb25UYXNr
IDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdvcmtlckV4Y2VwdGlvblRhc2s+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckV4Y2VwdGlvblRhc2soZXJy
b3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgbWVzc2FnaW5n
UHJveHkpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgV29ya2VyRXhjZXB0aW9uVGFzayhjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5n
UHJveHkpCiAgICAgICAgIDogbV9lcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29w
eSgpKQogICAgICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQpAQCAtMTI4LDYgKzExMiw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAg
ICAgIFdvcmtlciogd29ya2VyT2JqZWN0ID0gbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyT2JqZWN0
KCk7CkBAIC0xNTEsMTcgKzEzNiwxMiBAQCBwcml2YXRlOgogCiBjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZURlc3Ryb3llZFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3ll
ZFRhc2sobWVzc2FnaW5nUHJveHkpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgV29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWRUYXNrKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94
eSkKICAgICAgICAgOiBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKICAg
ICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKQogICAgIHsKICAgICAgICAgbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwpAQCAtMTcyLDE3ICsxNTIsMTIgQEAgcHJpdmF0
ZToKIAogY2xhc3MgV29ya2VyVGVybWluYXRlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUZXJt
aW5hdGVUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUZXJtaW5hdGVUYXNrKG1l
c3NhZ2luZ1Byb3h5KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIFdvcmtlclRlcm1pbmF0ZVRh
c2soV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICA6IG1fbWVz
c2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAg
ewogICAgICAgICBtX21lc3NhZ2luZ1Byb3h5LT50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgp
OwpAQCAtMTkzLDEyICsxNjgsNiBAQCBwcml2YXRlOgogCiBjbGFzcyBXb3JrZXJUaHJlYWRBY3Rp
dml0eVJlcG9ydFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRU
YXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBib29sIGNv
bmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrKG1lc3Nh
Z2luZ1Byb3h5LCBjb25maXJtaW5nTWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7Ci0gICAg
fQotCi1wcml2YXRlOgogICAgIFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzayhXb3JrZXJN
ZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogICAgICAgICA6IG1fbWVzc2FnaW5nUHJveHkobWVzc2Fn
aW5nUHJveHkpCiAgICAgICAgICwgbV9jb25maXJtaW5nTWVzc2FnZShjb25maXJtaW5nTWVzc2Fn
ZSkKQEAgLTIwNiw2ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQog
ICAgIHsKICAgICAgICAgbV9tZXNzYWdpbmdQcm94eS0+cmVwb3J0UGVuZGluZ0FjdGl2aXR5SW50
ZXJuYWwobV9jb25maXJtaW5nTWVzc2FnZSwgbV9oYXNQZW5kaW5nQWN0aXZpdHkpOwpAQCAtMjE4
LDE4ICsxODgsMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgUG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0
b3JUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzaz4gY3Jl
YXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQb3N0TWVzc2FnZVRv
UGFnZUluc3BlY3RvclRhc2sobWVzc2FnaW5nUHJveHksIG1lc3NhZ2UpKTsKLSAgICB9Ci0KLXBy
aXZhdGU6CiAgICAgUG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNrKFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICA6
IG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCiAgICAgICAgICwgbV9tZXNzYWdlKG1l
c3NhZ2UuaXNvbGF0ZWRDb3B5KCkpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCkBAIC0yNDQsMTcgKzIwOSwxMiBAQCBwcml2YXRlOgogCiBjbGFz
cyBOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE5vdGlmeU5ldHdv
cmtTdGF0ZUNoYW5nZVRhc2s+IGNyZWF0ZShib29sIGlzT25MaW5lKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNrKGlzT25MaW5l
KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRhc2so
Ym9vbCBpc09uTGluZSkKICAgICAgICAgOiBtX2lzT25MaW5lKGlzT25MaW5lKQogICAgIHsKICAg
ICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgKmNvbnRleHQpCiAgICAgewogICAgICAgICBBdG9taWNTdHJpbmcgZXZlbnRO
YW1lID0gbV9pc09uTGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMo
KS5vZmZsaW5lRXZlbnQ7CkBAIC0zMTAsNyArMjcwLDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3QKIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNo
YW5uZWxzLCB0aGlzKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhz
dGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VXb3JrZXJUYXNrPihtZXNzYWdlLCBjaGFubmVscywgdGhp
cykpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2Vy
R2xvYmFsU2NvcGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQpAQCAtMzIwLDMxICsy
ODAsMzEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFMKIAogICAgIGlmIChtX3dvcmtlclRocmVh
ZCkgewogICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7Ci0gICAgICAgIG1fd29y
a2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFz
azo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlV29ya2VyR2xvYmFsU2Nv
cGVUYXNrPihtZXNzYWdlLCBjaGFubmVscykpOwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVl
ZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s6OmNyZWF0ZSht
ZXNzYWdlLCBjaGFubmVscykpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzaz4obWVzc2FnZSwgY2hh
bm5lbHMpKTsKIH0KIAotYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK2Jvb2wgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAg
ICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBB
U1NFUlQobV93b3JrZXJUaHJlYWQpOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKHRhc2ssIG1vZGUpOworICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKHN0ZDo6bW92ZSh0YXNrKSwgbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQordm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAgICAvLyBGSVhNRTogSW4gY2FzZSBvZiBuZXN0
ZWQgd29ya2VycywgdGhpcyBzaG91bGQgZ28gZGlyZWN0bHkgdG8gdGhlIHJvb3QgRG9jdW1lbnQg
Y29udGV4dC4KICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7CisgICAg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1vdmUodGFzaykpOwogfQog
CiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnBvc3RUYXNrKFdvcmtlckV4Y2VwdGlvblRhc2s6OmNyZWF0ZShlcnJvck1lc3NhZ2Us
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCB0aGlzKSk7CisgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckV4Y2Vw
dGlvblRhc2s+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwsIHRoaXMpKTsKIH0KIAogc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2Fn
aW5nUHJveHksIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKQEAgLTM3Myw3ICszMzMsNyBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNh
dGVkV29ya2VyVGhyZWFkPgogICAgICAgICBtX3dvcmtlclRocmVhZEhhZFBlbmRpbmdBY3Rpdml0
eSA9IHRydWU7IC8vIFdvcmtlciBpbml0aWFsaXphdGlvbiBtZWFucyBhIHBlbmRpbmcgYWN0aXZp
dHkuCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhc2tDb3VudDsgKytpKQot
ICAgICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVlZEVh
cmx5VGFza3NbaV0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soc3RkOjptb3ZlKG1fcXVldWVkRWFybHlUYXNrc1tpXSkpOwogICAgICAg
ICBtX3F1ZXVlZEVhcmx5VGFza3MuY2xlYXIoKTsKICAgICB9CiB9CkBAIC0zOTIsNyArMzUyLDcg
QEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJv
b2wgaXNPbmxpbmUpCiAgICAgaWYgKCFtX3dvcmtlclRocmVhZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhOb3RpZnlOZXR3b3JrU3Rh
dGVDaGFuZ2VUYXNrOjpjcmVhdGUoaXNPbmxpbmUpKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdl
VGFzaz4oaXNPbmxpbmUpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2Vy
T2JqZWN0RGVzdHJveWVkSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlck1l
c3NhZ2luZ1Byb3h5KiBwcm94eSkKQEAgLTQ2MywxNCArNDIzLDE0IEBAIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3ll
ZCgpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJHbG9i
YWxTY29wZURlc3Ryb3llZFRhc2s6OmNyZWF0ZSh0aGlzKSk7CisgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlRGVz
dHJveWVkVGFzaz4odGhpcykpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSB3b3JrZXJHbG9iYWxTY29w
ZURlc3Ryb3llZEludGVybmFsKCkgb24gY29udGV4dCdzIHRocmVhZC4KIH0KIAogdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVDbG9zZWQoKQogewogICAgIC8vIEV4
ZWN1dGVzIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgb24gcGFyZW50IGNvbnRleHQncyB0
aHJlYWQuCi0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJUZXJt
aW5hdGVUYXNrOjpjcmVhdGUodGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUZXJtaW5hdGVUYXNrPih0aGlzKSk7CiB9
CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVk
SW50ZXJuYWwoKQpAQCAtNTAxLDE5ICs0NjEsMTkgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rvcihjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s6OmNyZWF0ZSh0aGlzLCBtZXNzYWdl
KSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5p
cXVlPFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzaz4odGhpcywgbWVzc2FnZSkpOwogfQog
I2VuZGlmCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3Jl
YXRlKHRoaXMsIHRydWUsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOworICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRBY3Rpdml0
eVJlcG9ydFRhc2s+KHRoaXMsIHRydWUsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogICAgIC8vIFdp
bGwgZXhlY3V0ZSByZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0
aHJlYWQuCiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rp
dml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnBvc3RUYXNrKFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3JlYXRlKHRo
aXMsIGZhbHNlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBv
cnRUYXNrPih0aGlzLCBmYWxzZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7CiAgICAgLy8gV2lsbCBl
eGVjdXRlIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKCkgb24gY29udGV4dCdzIHRocmVh
ZC4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5o
CmluZGV4IDBkN2E2Y2RlYmU4YWNjYzA3M2I2NmE4ZGU4Y2ZiOTBhNmNkZjdlNmIuLjY1MjY0MjVj
MzMwYjlmZjgyNjhhZTU3YWNkMjYyZGJiMTZmNDNkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRl
ICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC03OSw4ICs3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgV29ya2VyTG9hZGVyUHJveHkuCiAgICAgICAgIC8v
IFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCBvbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzY2hlZHVs
ZSBsb2FkaW5nCiAgICAgICAgIC8vIHJlcXVlc3RzIGFuZCB0byBzZW5kIGNhbGxiYWNrcyBiYWNr
IHRvIFdvcmtlckdsb2JhbFNjb3BlLgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xv
YWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSBPVkVSUklERTsK
LSAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBt
b2RlKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoc3Rk
Ojp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSBPVkVSUklERTsKKyAg
ICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3Rk
Ojp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcm
IG1vZGUpIE9WRVJSSURFOwogCiAgICAgICAgIHZvaWQgd29ya2VyVGhyZWFkQ3JlYXRlZChQYXNz
UmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4pOwogCkBAIC0xMTIsNyArMTExLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlOwogCi0g
ICAgICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcXVl
dWVkRWFybHlUYXNrczsgLy8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0
aHJlYWQgb2JqZWN0IGNyZWF0ZWQuCisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcXVldWVkRWFybHlUYXNrczsgLy8gVGFza3Mg
YXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNyZWF0ZWQuCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFn
ZUluc3BlY3RvciogbV9wYWdlSW5zcGVjdG9yOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCA5YTlmNTU2Zjc0MTNlM2ZlMjhkMTk2ZDVkMWNhNDUy
YzA1NDc2MDY1Li40ZWUzMDNkZTQ1NWE0MzlkMDZkMDY4NmJkMTkxYzk4Njg1ODBmMTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTE5NCwyNCArMTk0LDE5
IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6dGVybWluYXRlKCkKICAgICBtX21lc3NhZ2VRdWV1ZS5r
aWxsKCk7CiB9CiAKLXZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQordm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykK
IHsKLSAgICBwb3N0VGFza0Zvck1vZGUodGFzaywgZGVmYXVsdE1vZGUoKSk7CisgICAgcG9zdFRh
c2tGb3JNb2RlKHN0ZDo6bW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgV29y
a2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiB0YXNrKQordm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRl
cm1pbmF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFz
aykKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKFRhc2s6OmNyZWF0ZSh0YXNr
LCBkZWZhdWx0TW9kZSgpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgbV9tZXNzYWdlUXVldWUuYXBw
ZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KHN0ZDo6bW92ZSh0YXNrKSwgZGVmYXVs
dE1vZGUoKS5pc29sYXRlZENvcHkoKSkpOwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2Rl
KHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25z
dCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKFRhc2s6OmNyZWF0
ZSh0YXNrLCBtb2RlLmlzb2xhdGVkQ29weSgpKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxXb3Jr
ZXJSdW5Mb29wOjpUYXNrPiBXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUoUGFzc093blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCi17
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPihuZXcgVGFzayh0YXNrLCBtb2RlKSk7
CisgICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oc3RkOjpt
b3ZlKHRhc2spLCBtb2RlLmlzb2xhdGVkQ29weSgpKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9v
cDo6VGFzazo6cGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTIyMSw4ICsyMTYsOCBAQCB2b2lkIFdvcmtl
clJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKGNvbnN0IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3As
IFNjcmlwdEV4ZWN1dAogICAgICAgICBtX3Rhc2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOwogfQog
Ci1Xb3JrZXJSdW5Mb29wOjpUYXNrOjpUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQotICAgIDogbV90YXNrKHRhc2sp
CitXb3JrZXJSdW5Mb29wOjpUYXNrOjpUYXNrKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCisgICAgOiBtX3Rhc2so
c3RkOjptb3ZlKHRhc2spKQogICAgICwgbV9tb2RlKG1vZGUuaXNvbGF0ZWRDb3B5KCkpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCmluZGV4IDEwYWE4MWI1NDQwNWE4
NGE5MGJmNzE3ODg5ODQwMDdkZmMyMDgyYzguLjA1YWFiZmNhNzU0NjdhMDQxNzFkMWY5ZmIwNDQx
NTgxYzBiZjU4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCkBAIC0z
NCw3ICszNCw2IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw5ICs1
Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKICAg
ICAgICAgYm9vbCB0ZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUXVldWUua2ls
bGVkKCk7IH0KIAotICAgICAgICB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4pOwotICAgICAgICB2b2lkIHBvc3RUYXNrQW5kVGVybWluYXRlKFBh
c3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwotICAgICAgICB2b2lkIHBv
c3RUYXNrRm9yTW9kZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBj
b25zdCBTdHJpbmcmIG1vZGUpOworICAgICAgICB2b2lkIHBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisgICAgICAgIHZvaWQgcG9zdFRhc2tB
bmRUZXJtaW5hdGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KTsKKyAgICAgICAgdm9pZCBwb3N0VGFza0Zvck1vZGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpOwogCiAgICAgICAgIHVu
c2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWQoKSB7IHJldHVybiArK21fdW5pcXVlSWQ7IH0KIApA
QCAtNjksMTUgKzY4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgVGFz
ayB7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUYXNrKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAgICAgICBUYXNrKHN0ZDo6dW5pcXVl
X3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOwogICAgICAgICAgICAgflRhc2soKSB7IH0KICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
bW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICAgICAgdm9pZCBwZXJmb3Jt
VGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAg
ICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICAgICAgCi0g
ICAgICAgICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gbV90YXNrOwor
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IG1fdGFzazsKICAgICAgICAgICAgIFN0cmluZyBtX21vZGU7CiAgICAgICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBmZWYzZTU0YTQxYzhjODVlMGYx
Y2Y1YTI1NTY4NDRlOTMxYTcyYzI1Li4zNTVmNzUwZDQ4MmFlMDU2NDIxOWRjNWNhYzc0YTJhMjYy
NTI2YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC02Niwx
MCArNjYsNyBAQCB1bnNpZ25lZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KCkKIHN0
cnVjdCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gY3JlYXRl
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3Jv
dXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShzY3JpcHRVUkwsIHVz
ZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pKTsKLSAgICB9Cisg
ICAgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAKICAgICBV
UkwgbV9zY3JpcHRVUkw7CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwpAQCAtNzksOCArNzYsNiBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGU7
CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKLXByaXZhdGU6Ci0gICAg
V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5
UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5
UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiB9OwogCiBXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBz
ZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCkBAIC0xMDUsNyArMTAwLDcgQEAgV29ya2VyVGhy
ZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdAogICAgIDogbV90aHJlYWRJRCgwKQogICAgICwgbV93b3JrZXJMb2FkZXJQ
cm94eSh3b3JrZXJMb2FkZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29y
a2VyUmVwb3J0aW5nUHJveHkpCi0gICAgLCBtX3N0YXJ0dXBEYXRhKFdvcmtlclRocmVhZFN0YXJ0
dXBEYXRhOjpjcmVhdGUoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2Rl
LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgdG9wT3JpZ2luKSkKKyAgICAsIG1fc3RhcnR1cERhdGEoc3RkOjptYWtlX3VuaXF1ZTxX
b3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBz
b3VyY2VDb2RlLCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSwgdG9wT3JpZ2luKSkKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgICwgbV9ub3RpZmljYXRpb25DbGllbnQo
MCkKICNlbmRpZgpAQCAtMTYwLDcgKzE1NSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQoKQogICAgIC8vIEZyZWUgdGhlIHN0YXJ0dXAgZGF0YSB0byBjYXVzZSBpdHMgbWVtYmVy
IHZhcmlhYmxlIGRlcmVmJ3MgaGFwcGVuIG9uIHRoZSB3b3JrZXIncyB0aHJlYWQgKHNpbmNlCiAg
ICAgLy8gYWxsIHJlZi9kZXJlZnMgb2YgdGhlc2Ugb2JqZWN0cyBhcmUgaGFwcGVuaW5nIG9uIHRo
ZSB0aHJlYWQgYXQgdGhpcyBwb2ludCkuIE5vdGUgdGhhdAogICAgIC8vIFdvcmtlclRocmVhZDo6
fldvcmtlclRocmVhZCBoYXBwZW5zIG9uIGEgZGlmZmVyZW50IHRocmVhZCB3aGVyZSBpdCB3YXMg
Y3JlYXRlZC4KLSAgICBtX3N0YXJ0dXBEYXRhLmNsZWFyKCk7CisgICAgbV9zdGFydHVwRGF0YSA9
IG51bGxwdHI7CiAKICAgICBydW5FdmVudExvb3AoKTsKIApAQCAtMTg3LDExICsxODIsNiBAQCB2
b2lkIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKIAogY2xhc3MgV29ya2VyVGhyZWFkU2h1
dGRvd25GaW5pc2hUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlclRocmVhZFNodXRkb3duRmluaXNo
VGFzaz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2Vy
VGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrKCkpOwotICAgIH0KLQogICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKQEAgLTIwOCwxMSArMTk4LDYgQEAgcHVibGljOgogCiBjbGFzcyBXb3JrZXJU
aHJlYWRTaHV0ZG93blN0YXJ0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTaHV0ZG93
blN0YXJ0VGFzaz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2soKSk7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKmNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOwpAQCAtMjQwLDcgKzIyNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICAv
LyBTdGljayBhIHNodXRkb3duIGNvbW1hbmQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUsIHNvIHRo
YXQgd2UgZGVhbAogICAgICAgICAvLyB3aXRoIGFsbCB0aGUgY2xlYW51cCB0YXNrcyB0aGUgZGF0
YWJhc2VzIHBvc3QgZmlyc3QuCi0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0VGFzayhX
b3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2s6OmNyZWF0ZSgpKTsKKyAgICAgICAgd29ya2Vy
R2xvYmFsU2NvcGUtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU2h1dGRv
d25GaW5pc2hUYXNrPigpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFz
aygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTI1OCw3ICsyNDMsNyBAQCB2b2lkIFdvcmtl
clRocmVhZDo6c3RvcCgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChtX3dv
cmtlckdsb2JhbFNjb3BlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBtX3J1bkxvb3AucG9zdFRh
c2tBbmRUZXJtaW5hdGUoV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s6OmNyZWF0ZSgpKTsK
KyAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKQEAgLTI3NCw3ICsyNTksNyBAQCB2b2lkIFdv
cmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKICAg
ICBIYXNoU2V0PFdvcmtlclRocmVhZCo+JiB0aHJlYWRzID0gd29ya2VyVGhyZWFkcygpOwogICAg
IEhhc2hTZXQ8V29ya2VyVGhyZWFkKj46Oml0ZXJhdG9yIGVuZCA9IHRocmVhZHMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoU2V0PFdvcmtlclRocmVhZCo+OjppdGVyYXRvciBpdCA9IHRocmVhZHMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+cnVuTG9vcCgpLnBvc3RUYXNr
KGFkb3B0UHRyKG5ldyBSZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlUYXNrKSk7CisgICAgICAg
ICgqaXQpLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxSZWxlYXNlRmFzdE1h
bGxvY0ZyZWVNZW1vcnlUYXNrPigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggOTZkOWIwN2NkMzg0NmM5MWUxMjZj
ODZmYzRkZjYxYmFkMjQ4NWJiMC4uYTA5ZmI4MDRlYTc4MDY0NTEwNWJjNmZmYzkxMTg5YWMwMWU2
MzI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiR3JvdXBTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3Au
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
QEAgLTkyLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8V29y
a2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgICAgIE11dGV4IG1fdGhy
ZWFkQ3JlYXRpb25NdXRleDsKIAotICAgICAgICBPd25QdHI8V29ya2VyVGhyZWFkU3RhcnR1cERh
dGE+IG1fc3RhcnR1cERhdGE7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJUaHJlYWRT
dGFydHVwRGF0YT4gbV9zdGFydHVwRGF0YTsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgICAgIE5vdGlmaWNhdGlvbkNsaWVu
dCogbV9ub3RpZmljYXRpb25DbGllbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221797</attachid>
            <date>2014-01-21 15:44:16 -0800</date>
            <delta_ts>2014-01-21 15:44:16 -0800</delta_ts>
            <desc>mostly done, one fail yet</desc>
            <filename>bug-127330-20140121154416.patch</filename>
            <type>text/plain</type>
            <size>137815</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVhZWQwYmQ0ZTEzZWNl
MjYzMDNjOGM0YmIyMmZjNTY1ZjcxMzBiZC4uZDFhYWYyNjlkMjhmOTYzYjY4ZDU4MDY3YWYzNWVm
MDJiN2EwNzU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OCBAQAorMjAxNC0wMS0yMSAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0IHRhc2tzLCBjcm9zcy10aHJlYWQgZGF0YSBhbmQgY29waWVycyBzaG91bGQgdXNlIHN0ZDo6
dW5pcXVlX3B0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI3MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlOjp+RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVk
dWxlVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpv
cGVuRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tX
cmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OmNsZWFyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNzUGVu
ZGluZ1Rhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWxDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxD
bGllbnQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OkJyaWRnZTo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpx
dWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgICogZG9tL0Nyb3NzVGhyZWFkVGFzay5oOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NUaHJlYWRUYXNrMTo6Q3Jvc3NUaHJlYWRUYXNrMSk6CisgICAgICAgIChXZWJDb3JlOjpD
cm9zc1RocmVhZFRhc2sxOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc1Ro
cmVhZFRhc2syOjpDcm9zc1RocmVhZFRhc2syKToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzVGhy
ZWFkVGFzazI6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzVGhyZWFkVGFz
azM6OkNyb3NzVGhyZWFkVGFzazMpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRUYXNr
Mzo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRUYXNrNDo6Q3Jv
c3NUaHJlYWRUYXNrNCk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc1RocmVhZFRhc2s0OjpwZXJm
b3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc1RocmVhZFRhc2s1OjpDcm9zc1RocmVh
ZFRhc2s1KToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzVGhyZWFkVGFzazU6OnBlcmZvcm1UYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzVGhyZWFkVGFzazY6OkNyb3NzVGhyZWFkVGFzazYp
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRUYXNrNjo6cGVyZm9ybVRhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRUYXNrNzo6Q3Jvc3NUaHJlYWRUYXNrNyk6CisgICAg
ICAgIChXZWJDb3JlOjpDcm9zc1RocmVhZFRhc2s3OjpwZXJmb3JtVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc1RocmVhZFRhc2s4OjpDcm9zc1RocmVhZFRhc2s4KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzVGhyZWFkVGFzazg6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUNhbGxiYWNrVGFzayk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtVGFz
a0NvbnRleHQ6OlBlcmZvcm1UYXNrQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2VzU29vbik6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vU3RyaW5nQ2FsbGJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJhY2sp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5U
aHJlYWRDcmVhdGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVE
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVE
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6cG9zdExpc3RlbmVyVGFzayk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpjcm9zc1RocmVhZFJlbW92
ZVJlcXVlc3RGcm9tQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpjb3B5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjphZG9wdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdEJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dEJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9wdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29weURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQ29weURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2U6OmRvUGxhdGZvcm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Ojpkb1BsYXRmb3JtQ29weURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Ojpkb1BsYXRmb3JtQWRvcHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpk
b1BsYXRmb3JtQ29weURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
ZG9QbGF0Zm9ybUFkb3B0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZv
cm1Db3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZv
cm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9u
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZvcm1Db3B5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3JtQWRv
cHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQ29weURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZvcm1Db3B5RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3JtQWRvcHQpOgorICAgICAgICAq
IHdvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Ondv
cmtlclNjcmlwdExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeTo6Y29ubmVjdFRvV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckV2
ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1
ZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9i
YWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckds
b2JhbFNjb3BlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojp3b3JrZXJHbG9iYWxTY29wZUNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclJ1bkxvb3A6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6
OnBvc3RUYXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6
OnBvc3RUYXNrRm9yTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUYXNr
OjpUYXNrKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6
OldvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzazo6
cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
SW5BbGxUaHJlYWRzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorCiAyMDE0
LTAxLTIxICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFNp
bmNlIE1pZHBvaW50U3RhdGUgaXMgYSBjbGFzcywgaXQgc2hvdWxkIGJlaGF2ZSBsaWtlIGEgY2xh
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
aW5kZXggZTE4Mjc5NWJlOWE4MThmM2I0MjBlNTBkY2U4NGNkMTRmMWI5ODA0ZC4uYmI4YzU4MWJk
YjY4NDFlMTM3NTA2N2Y5OTM4YTEwMDc0Y2M4NDZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTUzLDggKzUzLDYgQEAKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBA
IC05MCwxMSArODgsNiBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsCiAKIGNsYXNzIERlcmVmQ29udGV4dFRhc2sg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8RGVyZWZDb250ZXh0VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRGVyZWZDb250ZXh0VGFzayhjb250ZXh0KSk7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQgPT0gbV9jb250ZXh0KTsKQEAg
LTEwMywxMiArOTYsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRh
c2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLXByaXZhdGU6CiAgICAgRGVyZWZDb250ZXh0
VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQpCiAgICAgICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgewogICAgIH0KLSAgICAKKworcHJpdmF0ZToKICAg
ICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogfTsKIApAQCAtMTIw
LDcgKzExMyw3IEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQogICAgICAgICAvLyBEZXJlZkNvbnRl
eHRUYXNrOjpjcmVhdGUuCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7CiAgICAgICAg
IAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEZXJlZkNvbnRleHRU
YXNrOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKSkpOworICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlcmVm
Q29udGV4dFRhc2s+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkpKTsKICAgICB9
CiB9CiAKQEAgLTIwOSwyOCArMjAyLDIzIEBAIHZvaWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9u
KFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSCiAKIGNs
YXNzIERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERlbGl2ZXJQZW5k
aW5nQ2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERlbGl2ZXJQZW5kaW5n
Q2FsbGJhY2tUYXNrKHRyYW5zYWN0aW9uKSk7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKICAgICAgICAgbV90cmFu
c2FjdGlvbi0+cGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwogICAgIH0KIAotcHJpdmF0ZToKICAg
ICBEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzayhQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0
cmFuc2FjdGlvbikKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgIHsK
ICAgICB9CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0
aW9uOwogfTsKIAogdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKFNR
TFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrOjpjcmVhdGUodHJhbnNhY3Rp
b24pKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91
bmlxdWU8RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2s+KHRyYW5zYWN0aW9uKSk7CiB9CiAKIFZl
Y3RvcjxTdHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVOYW1lcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAK
aW5kZXggNmY0MGNmMTlkY2I5M2FmZGM3OTFlZDNiYWI3YmYwYWM0OTkzODliMy4uYmVmYWJiNjA0
ZTE4NjZiMzczMzA4YTRmY2Y2ZTcyNjZjNDQxYjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTE5LDIz
ICsxMTksMTggQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZh
aWxhYmxlKQogCiBjbGFzcyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIDogcHVibGljIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERhdGFi
YXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxi
YWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRhYmFzZUNyZWF0aW9u
Q2FsbGJhY2tUYXNrKGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7Ci0gICAgfQotCiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsK
ICAgICAgICAgbV9jcmVhdGlvbkNhbGxiYWNrLT5oYW5kbGVFdmVudChtX2RhdGFiYXNlLmdldCgp
KTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayhQ
YXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNr
PiBjYWxsYmFjaykKICAgICAgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAgICAgICAsIG1f
Y3JlYXRpb25DYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAg
IFJlZlB0cjxEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFj
az4gbV9jcmVhdGlvbkNhbGxiYWNrOwogfTsKQEAgLTMzNSw3ICszMzAsNyBAQCBQYXNzUmVmUHRy
PERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZQogCiAgICAgaWYgKGJhY2tlbmQtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxs
YmFjay5nZXQoKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJh
c2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFiYXNlLmdldCgp
KTsKLSAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3JlYXRlKGRhdGFiYXNlLCBjcmVhdGlvbkNh
bGxiYWNrKSk7CisgICAgICAgIGRhdGFiYXNlLT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzaz4oZGF0
YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKICAgICB9CiAKICAgICBBU1NFUlQoZGF0YWJhc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxs
YmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2Fs
bGJhY2tXcmFwcGVyLmgKaW5kZXggYzE4NGEzNzM4MDUzODI0ZTI3N2E1MDA4YmVhNzRhNWM0M2Rh
MzY3MC4uMmY5OWQ2MmQxMjNkNGMxZWUyMmY3MmNmOGU1ODAyYzdhMWJmODc1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3Jh
cHBlci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvbnRleHQgPSBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAgICAgICAg
IGNhbGxiYWNrID0gbV9jYWxsYmFjay5yZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICB9Ci0g
ICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKFNhZmVSZWxlYXNlVGFzazo6Y3JlYXRlKGNhbGxiYWNr
KSk7CisgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2FmZVJlbGVh
c2VUYXNrPihjYWxsYmFjaykpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8VD4gdW53cmFwKCkK
QEAgLTkwLDExICs5MCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY2xhc3MgU2FmZVJlbGVh
c2VUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8U2FmZVJlbGVhc2VUYXNrPiBjcmVhdGUoVCog
Y2FsbGJhY2tUb1JlbGVhc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgU2FmZVJlbGVhc2VUYXNrKGNhbGxiYWNrVG9SZWxlYXNlKSk7Ci0gICAgICAgIH0KLQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2tUb1JlbGVh
c2UgJiYgY29udGV4dCAmJiBjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CkBAIC0xMDQsMTIg
Kzk5LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2so
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNp
dCBTYWZlUmVsZWFzZVRhc2soVCogY2FsbGJhY2tUb1JlbGVhc2UpCiAgICAgICAgICAgICA6IG1f
Y2FsbGJhY2tUb1JlbGVhc2UoY2FsbGJhY2tUb1JlbGVhc2UpCiAgICAgICAgIHsKICAgICAgICAg
fQogCisgICAgcHJpdmF0ZToKICAgICAgICAgVCogbV9jYWxsYmFja1RvUmVsZWFzZTsKICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
Y3BwCmluZGV4IDBhYjNjNWViMWU0MDIwMmI0ZDVhOTU0MzkzOWNhYzQyNzNjMmU2YjMuLjgyMDI2
YWY0OTA4NGQ0YTY4Zjc1ZTM0MjVkMGU0OGMzZGY0YTY1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcg
QEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWUKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdUYXNrcygp
OwogfQogCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCit2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEoVmVjdG9yPGNoYXI+IGJpbmFyeURhdGEpCiB7CiAgICAgbV9wZW5kaW5nVGFza3Mu
YXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjaywg
dGhpcywgYmluYXJ5RGF0YSkpOwogICAgIGlmICghbV9zdXNwZW5kZWQpCkBAIC0yMzIsOSArMjMy
LDkgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nl
c3NQZW5kaW5nVGFza3MoKQogICAgICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNz
UGVuZGluZ1Rhc2tzQ2FsbGJhY2ssIHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiB0YXNrczsKKyAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiB0
YXNrczsKICAgICB0YXNrcy5zd2FwKG1fcGVuZGluZ1Rhc2tzKTsKLSAgICBmb3IgKFZlY3RvcjxP
d25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0YXNrcy5lbmQoKTsgKytpdGVyKQorICAgIGZvciAo
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj46OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSB0YXNrcy5iZWdpbigpOyBpdGVyICE9IHRhc2tzLmVuZCgpOyAr
K2l0ZXIpCiAgICAgICAgICgqaXRlciktPnBlcmZvcm1UYXNrKDApOwogfQogCkBAIC0yNTIsNyAr
MjUyLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXgKICAgICAgICAgd3JhcHBlci0+bV9jbGll
bnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi12b2lkIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlciwgUGFzc093blB0cjxWZWN0b3I8Y2hh
cj4+IGJpbmFyeURhdGEpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4gd3JhcHBlciwgVmVjdG9yPGNoYXI+IGJpbmFyeURhdGEpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCAhY29udGV4dCk7CiAgICAgaWYgKHdyYXBwZXItPm1fY2xpZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IDI5
ZjU0OTUwYThiY2EzNGFhYzBkNWJkNGU3MDRlZTE4NTQ0NjAxZGEuLjYyYzA1OTcyZGI5NzUxMDg1
ZmNlZjNhMWIwZjIwZjhlMmRiNjdlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgKQEAgLTM4LDggKzM4LDYgQEAKICNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC04MCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ29ubmVjdCgp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+Pik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4pOwogICAgIHZvaWQgZGlk
VXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCk7CiAgICAg
dm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB2b2lkIGRpZENsb3NlKHVuc2ln
bmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6
OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbik7CkBAIC05Niw3ICs5NCw3IEBAIHByaXZhdGU6CiAKICAgICBz
dGF0aWMgdm9pZCBkaWRDb25uZWN0Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPik7CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVCaW5h
cnlEYXRhQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgUGFzc093blB0cjxWZWN0b3I8Y2hh
cj4+KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YUNhbGxiYWNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4sIFZlY3RvcjxjaGFyPik7CiAgICAgc3RhdGljIHZvaWQgZGlkVXBkYXRl
QnVmZmVyZWRBbW91bnRDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCB1bnNpZ25lZCBsb25n
IGJ1ZmZlcmVkQW1vdW50KTsKICAgICBzdGF0aWMgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hh
a2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KTsKICAgICBzdGF0aWMgdm9pZCBkaWRDbG9z
ZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVm
ZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7
CkBAIC0xMTQsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBtX3NlbmRSZXF1ZXN0UmVzdWx0OwogICAgIHVuc2lnbmVkIGxvbmcg
bV9idWZmZXJlZEFtb3VudDsKICAgICBib29sIG1fc3VzcGVuZGVkOwotICAgIFZlY3RvcjxPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcGVuZGluZ1Rhc2tzOworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcGVu
ZGluZ1Rhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA3MmIxOTJhZjM0M2Vi
NTk2ZmEwOWE3NWU4YTA1ZDRjYmJiYWQ1YzEzLi5iMGU3ZThhNzRiMDY1MTIzZmJlN2MwOTU1NDg3
ODZkYTg2ZjQ1NDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcApAQCAtNTcsOCArNTcsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlC
dWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBA
IC01MTYsMTQgKzUxNCwxNCBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtc2cpCiAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSht
c2csIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CiB9CiAKLXZv
aWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFy
Pj4gYmluYXJ5RGF0YSkKK3ZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0
b3I8Y2hhcj4gYmluYXJ5RGF0YSkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBk
aWRSZWNlaXZlQmluYXJ5RGF0YSgpICVsdSBieXRlIGJpbmFyeSBtZXNzYWdlIiwgdGhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oYmluYXJ5RGF0YS0+c2l6ZSgpKSk7CisgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUJpbmFyeURhdGEoKSAlbHUgYnl0ZSBiaW5h
cnkgbWVzc2FnZSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGJpbmFyeURhdGEu
c2l6ZSgpKSk7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAgICBjYXNlIEJpbmFyeVR5
cGVCbG9iOiB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gYmluYXJ5RGF0YS0+c2l6ZSgpOworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IGJpbmFyeURhdGEuc2l6ZSgpOwogICAgICAgICBSZWZQdHI8UmF3
RGF0YT4gcmF3RGF0YSA9IFJhd0RhdGE6OmNyZWF0ZSgpOwotICAgICAgICBiaW5hcnlEYXRhLT5z
d2FwKCpyYXdEYXRhLT5tdXRhYmxlRGF0YSgpKTsKKyAgICAgICAgYmluYXJ5RGF0YS5zd2FwKCpy
YXdEYXRhLT5tdXRhYmxlRGF0YSgpKTsKICAgICAgICAgYXV0byBibG9iRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmxvYkRhdGE+KCk7CiAgICAgICAgIGJsb2JEYXRhLT5hcHBlbmREYXRhKHJhd0Rh
dGEucmVsZWFzZSgpLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKTsKICAgICAgICAgUmVm
UHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUoc3RkOjptb3ZlKGJsb2JEYXRhKSwgc2l6ZSk7
CkBAIC01MzIsNyArNTMwLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRh
KFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlEYXRhKQogICAgIH0KIAogICAgIGNhc2Ug
QmluYXJ5VHlwZUFycmF5QnVmZmVyOgotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoYmluYXJ5RGF0YS0+ZGF0YSgpLCBiaW5hcnlE
YXRhLT5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkp
OworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVy
OjpjcmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmlu
ZGV4IDc1NDgyZDgxMWE0MjE3NDk4NTliNWU3ZTAwNDI5NDM1YWYzNDBmNmIuLjYyZmQzMGUzN2Mx
ODViMjU3OTE4MTc2NjI1N2RiZTA0OTRjYzA2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFz
aC5oPgogCkBAIC0xMDYsNyArMTA1LDcgQEAgcHVibGljOgogICAgIC8vIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKFBh
c3NPd25QdHI8VmVjdG9yPGNoYXI+Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCaW5hcnlEYXRhKFZlY3RvcjxjaGFyPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
VXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDcxNjRlZGMxZWI2Y2FjM2VjOWYzNDIyM2ViZWQ2NDkxMjlkZjQz
YzQuLjNmNzNkZmI5ZjZhODlkOTg1Y2E5YzE4NGMyOGUwYjJiMzI4NGY4NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTU3NSwxMyArNTc1LDEzIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lKCkKICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBtZW1iZXIgdmFyaWFibGVz
IGFyZSBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYmVmb3JlCiAgICAgICAgICAgICAvLyB0aGUgaGFu
ZGxlciBpcyBpbnZva2VkLgogICAgICAgICAgICAgLy8gVmVjdG9yPGNoYXI+Ojpzd2FwKCkgaXMg
dXNlZCBoZXJlIHRvIGNsZWFyIG1fY29udGludW91c0ZyYW1lRGF0YS4KLSAgICAgICAgICAgIE93
blB0cjxWZWN0b3I8Y2hhcj4+IGNvbnRpbnVvdXNGcmFtZURhdGEgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPGNoYXI+KTsKLSAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lRGF0YS5zd2FwKCpjb250
aW51b3VzRnJhbWVEYXRhKTsKKyAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBjb250aW51b3VzRnJh
bWVEYXRhID0gVmVjdG9yPGNoYXI+KCk7CisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURh
dGEuc3dhcChjb250aW51b3VzRnJhbWVEYXRhKTsKICAgICAgICAgICAgIG1faGFzQ29udGludW91
c0ZyYW1lID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAobV9jb250aW51b3VzRnJhbWVPcENvZGUg
PT0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcg
bWVzc2FnZTsKLSAgICAgICAgICAgICAgICBpZiAoY29udGludW91c0ZyYW1lRGF0YS0+c2l6ZSgp
KQotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChjb250aW51
b3VzRnJhbWVEYXRhLT5kYXRhKCksIGNvbnRpbnVvdXNGcmFtZURhdGEtPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnRpbnVvdXNGcmFtZURhdGEuc2l6ZSgpKQorICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChjb250aW51b3VzRnJhbWVEYXRhLmRh
dGEoKSwgY29udGludW91c0ZyYW1lRGF0YS5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICIiOwogICAgICAgICAgICAgICAgIGlmICht
ZXNzYWdlLmlzTnVsbCgpKQpAQCAtNTg5LDcgKzU4OSw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5l
bDo6cHJvY2Vzc0ZyYW1lKCkKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9jb250aW51b3VzRnJhbWVPcENvZGUgPT0gV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZUJpbmFyeSkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEo
Y29udGludW91c0ZyYW1lRGF0YS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShzdGQ6Om1vdmUoY29udGludW91c0ZyYW1lRGF0YSkpOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC02MTYsMTAgKzYxNiwxMCBAQCBib29sIFdl
YlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAKICAgICBjYXNlIFdlYlNvY2tldEZyYW1l
OjpPcENvZGVCaW5hcnk6CiAgICAgICAgIGlmIChmcmFtZS5maW5hbCkgewotICAgICAgICAgICAg
T3duUHRyPFZlY3RvcjxjaGFyPj4gYmluYXJ5RGF0YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hh
cj4oZnJhbWUucGF5bG9hZExlbmd0aCkpOwotICAgICAgICAgICAgbWVtY3B5KGJpbmFyeURhdGEt
PmRhdGEoKSwgZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7CisgICAgICAgICAg
ICBWZWN0b3I8Y2hhcj4gYmluYXJ5RGF0YSA9IFZlY3RvcjxjaGFyPihmcmFtZS5wYXlsb2FkTGVu
Z3RoKTsKKyAgICAgICAgICAgIG1lbWNweShiaW5hcnlEYXRhLmRhdGEoKSwgZnJhbWUucGF5bG9h
ZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7CiAgICAgICAgICAgICBza2lwQnVmZmVyKGZyYW1lRW5k
IC0gbV9idWZmZXIuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQmlu
YXJ5RGF0YShiaW5hcnlEYXRhLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoc3RkOjptb3ZlKGJpbmFyeURhdGEpKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1faGFzQ29udGludW91c0ZyYW1lID0gdHJ1ZTsKICAgICAgICAgICAg
IG1fY29udGludW91c0ZyYW1lT3BDb2RlID0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oCmluZGV4IDQ2NjQxYzA2YzIxY2YwNWI4ODBlODg1YjQ5NzBhN2E0
YzE0MDA4YTkuLjkyODk0NGRkODk4OTMyN2ZkNDhkMDVjNWRmOTMwYjgwMTg4N2E5YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWxDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENvbm5lY3QoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKGNvbnN0IFN0cmluZyYpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+KSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3RvcjxjaGFyPikgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkgeyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIC8qIGJ1ZmZlcmVk
QW1vdW50ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggNjViOGQyYmMxNGY4MWUwMDNjMzU0YjhkYzAwNDMyN2NlNTdhYjkyOS4uOGJmMjk0NGU0ZGRl
OTExNGUzYzlkYWIxZGQwMTEyZjJiZTJmYTgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0yODMsMTYgKzI4MywxNiBAQCB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lcwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZU1lc3Nh
Z2UsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSksIG1fdGFza01vZGUpOwogfQogCi1z
dGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVCaW5hcnlEYXRhKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzT3duUHRyPFZlY3Rv
cjxjaGFyPj4gYmluYXJ5RGF0YSkKK3N0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkUmVj
ZWl2ZUJpbmFyeURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdy
YXBwZXIsIFZlY3RvcjxjaGFyPiBiaW5hcnlEYXRhKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRSZWNlaXZlQmluYXJ5RGF0YShiaW5hcnlEYXRhKTsKIH0KIAotdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEo
UGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCit2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hh
cj4gYmluYXJ5RGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShjcmVhdGVDYWxsYmFj
a1Rhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZUJpbmFyeURhdGEsIG1fd29ya2VyQ2xp
ZW50V3JhcHBlciwgYmluYXJ5RGF0YSksIG1fdGFza01vZGUpOworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShjcmVhdGVDYWxsYmFja1Rhc2soJndv
cmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZUJpbmFyeURhdGEsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgc3RkOjptb3ZlKGJpbmFyeURhdGEpKSwgbV90YXNrTW9kZSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdvcmtlckdsb2JhbFNjb3BlRGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRB
bW91bnQpCkBAIC0zNjEsMjggKzM2MSwyMCBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjp+QnJpZGdlKCkKIAogY2xhc3MgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Oldvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2sgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlKFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyKiBwZWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSogbG9hZGVy
UHJveHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrKHBlZXIsIGxvYWRlclByb3h5
LCB3b3JrZXJDbGllbnRXcmFwcGVyKSk7Ci0gICAgfQotCiAgICAgdmlydHVhbCB+V29ya2VyR2xv
YmFsU2NvcGVEaWRJbml0aWFsaXplVGFzaygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOwogICAgICAgICBpZiAobV93b3JrZXJDbGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRD
aGFubmVsQ3JlYXRpb24oKSkgewogICAgICAgICAgICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXpl
KCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRvIGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0
byBkZWxldGUgdGhlIHBlZXIuCi0gICAgICAgICAgICBPd25QdHI8V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI+IHBlZXIgPSBhZG9wdFB0cihtX3BlZXIpOwotICAgICAgICAg
ICAgbV9wZWVyID0gMDsKLSAgICAgICAgICAgIG1fbG9hZGVyUHJveHktPnBvc3RUYXNrVG9Mb2Fk
ZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZERlc3Ryb3ksIHBlZXIucmVsZWFzZSgpKSk7CisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI+IHBlZXIobV9w
ZWVyKTsKKyAgICAgICAgICAgIG1fcGVlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2xvYWRl
clByb3h5LT5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWREZXN0cm95LCBzdGQ6Om1vdmUocGVlcikp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmRp
ZENyZWF0ZVdlYlNvY2tldENoYW5uZWwobV9wZWVyKTsKICAgICB9CiAgICAgdmlydHVhbCBib29s
IGlzQ2xlYW51cFRhc2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLXByaXZh
dGU6CiAgICAgV29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzayhXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlciogcGVlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlcikKQEAgLTM5Miw2ICszODQsNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlBlZXIqIG1fcGVlcjsKICAgICBXb3JrZXJMb2FkZXJQcm94eSog
bV9sb2FkZXJQcm94eTsKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CkBAIC00MDYsNyArMzk5LDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5p
dGlhbGl6ZShTY3JpcHRFeGVjdXQKIAogICAgIFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUoY2xp
ZW50V3JhcHBlciwgKmxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSk7CiAgICAgYm9vbCBz
ZW50ID0gbG9hZGVyUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoCi0g
ICAgICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJHbG9iYWxTY29w
ZURpZEluaXRpYWxpemVUYXNrOjpjcmVhdGUocGVlciwgbG9hZGVyUHJveHksIGNsaWVudFdyYXBw
ZXIpLCB0YXNrTW9kZSk7CisgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6Oldvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2s+KHBl
ZXIsIGxvYWRlclByb3h5LCBjbGllbnRXcmFwcGVyKSwgdGFza01vZGUpOwogICAgIGlmICghc2Vu
dCkgewogICAgICAgICBjbGllbnRXcmFwcGVyLT5jbGVhclBlZXIoKTsKICAgICAgICAgZGVsZXRl
IHBlZXI7CkBAIC00NTQsMTMgKzQ0NywxMyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogICAg
IHBlZXItPnNlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGVlciogcGVlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGRhdGEpCit2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEFycmF5
QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIFZlY3Rv
cjxjaGFyPiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVy
KTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwogICAgIHBlZXItPnNlbmQoKmFycmF5QnVmZmVyKTsKIH0KIApAQCAtNDkzLDExICs0
ODYsMTEgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICBpZiAoIW1fd29ya2VyQ2xpZW50
V3JhcHBlciB8fCAhbV9wZWVyKQogICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRGYWlsOwogICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZlLCBo
ZW5jZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8Y2hh
cj4uCi0gICAgT3duUHRyPFZlY3RvcjxjaGFyPj4gZGF0YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8
Y2hhcj4oYnl0ZUxlbmd0aCkpOworICAgIFZlY3RvcjxjaGFyPiBkYXRhID0gVmVjdG9yPGNoYXI+
KGJ5dGVMZW5ndGgpOwogICAgIGlmIChiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSkKLSAgICAgICAg
bWVtY3B5KGRhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURhdGEu
ZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOworICAgICAgICBtZW1jcHkoZGF0YS5k
YXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRl
T2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKLSAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlciwgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCBkYXRhLnJlbGVhc2UoKSkpOworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEFycmF5QnVmZmVyLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIHN0ZDo6bW92ZShkYXRhKSkpOwogICAgIFJlZjxCcmlk
Z2U+IHByb3RlY3QoKnRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0g
bV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwpAQCAtNTc1LDcgKzU2OCw3IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZmFpbChjb25zdCBTdHJpbmcm
IHJlYXNvbikKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEZhaWws
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgcmVhc29uKSk7CiB9CiAKLXZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8UGVlcj4gcGVlcikKK3ZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxQZWVyPiBwZWVyKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwpAQCAtNTg5LDExICs1ODIsMTEgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpkaXNjb25uZWN0KCkKIHsKICAgICBj
bGVhckNsaWVudFdyYXBwZXIoKTsKICAgICBpZiAobV9wZWVyKSB7Ci0gICAgICAgIE93blB0cjxQ
ZWVyPiBwZWVyID0gYWRvcHRQdHIobV9wZWVyKTsKLSAgICAgICAgbV9wZWVyID0gMDsKLSAgICAg
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWREZXN0cm95LCBwZWVyLnJl
bGVhc2UoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVlcj4gcGVlcihtX3BlZXIpOwor
ICAgICAgICBtX3BlZXIgPSBudWxscHRyOworICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZERlc3Ryb3ksIHN0ZDo6bW92ZShwZWVyKSkpOwogICAgIH0KLSAgICBt
X3dvcmtlckdsb2JhbFNjb3BlID0gMDsKKyAgICBtX3dvcmtlckdsb2JhbFNjb3BlID0gbnVsbHB0
cjsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOTBiMGVhMDdlMzFhODVi
NTBmM2Y3NTk3M2RlNjQxYzIxNDljYzY0OC4uMzFmNGY2ZDllMjdhMjdjMDY4NGM0M2EzOTc4ZThi
NTY1NDNkOTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAg
LTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFdlYlNvY2tldENoYW5uZWxDbGll
bnQgZnVuY3Rpb25zLgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpIG92ZXJyaWRl
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlE
YXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+Pikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4pIG92ZXJyaWRlOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZm
ZXJlZEFtb3VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydENsb3Np
bmdIYW5kc2hha2UoKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVu
c2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikg
b3ZlcnJpZGU7CkBAIC0xNzEsMTIgKzE3MSwxMiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGVlciosIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+Pik7CisgICAg
c3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGVlciosIFZlY3RvcjxjaGFyPik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNl
bmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3Rh
dGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwg
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgcmVh
c29uKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc093blB0cjxQZWVyPik7CisgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERl
c3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHN0ZDo6dW5pcXVlX3B0cjxQZWVyPik7CiAg
ICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBlZXIqKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkUmVzdW1lKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQZWVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2FsbGJhY2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxi
YWNrRGF0YS5oCmluZGV4IGZmNzZhOWU4NTM3MjVmMzg4NGU4N2ZjNDUyMmYyODZlMWRhYTY4ZDUu
LjkyMzAwN2Q5ODc2YTVlMTRjMzcwYmE3YmE2NGJkYWVkYTc0NWEzODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApAQCAtNzksMjAgKzc5LDE1IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVs
ZXRlQ2FsbGJhY2tEYXRhVGFzaz4gY3JlYXRlKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxldGVDYWxsYmFja0RhdGFUYXNrKGRhdGEp
KTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopCiAgICAgewogICAgICAgICBkZWxldGUgbV9kYXRhOwogICAgIH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLXByaXZhdGU6
CiAKICAgICBEZWxldGVDYWxsYmFja0RhdGFUYXNrKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKSA6IG1f
ZGF0YShkYXRhKSB7fQogCitwcml2YXRlOgogICAgIEpTQ2FsbGJhY2tEYXRhKiBtX2RhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
VGFzay5oCmluZGV4IDNjYjkzZjMxMTNkM2I0ZjZiYjMwNjFhNWM1ZDBiMTc2MGZmMzAzZjAuLjg0
NWRmNzU4YTZkNTg3YzYwYWQ1MTJlM2JjYjA1ZDNkNjFiNmI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCkBAIC0zNSwxOCAr
MzUsMTIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjazsKIAogY2xhc3MgSlNHbG9iYWxP
YmplY3RUYXNrIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEpTR2xvYmFsT2JqZWN0VGFzaz4gY3JlYXRl
KEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8SlNDOjpNaWNyb3Rh
c2s+IHRhc2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEpTR2xvYmFsT2Jq
ZWN0VGFzayhnbG9iYWxPYmplY3QsIHRhc2spKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5KU0ds
b2JhbE9iamVjdFRhc2soKTsKLQotcHJpdmF0ZToKICAgICBKU0dsb2JhbE9iamVjdFRhc2soSlNE
T01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPEpTQzo6TWljcm90YXNrPik7CisgICAgdmlydHVh
bCB+SlNHbG9iYWxPYmplY3RUYXNrKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwogCitwcml2YXRlOgogICAgIFJlZlB0
cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBtX2NhbGxiYWNrOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggNzVhMWY3M2ZhZWJh
MTc2OWFkNzU2YmY5NzA3MDMyNTE0ZmZiOTg0YS4uMWEwMjFiNTIyNzBlMjFjOTI1N2NlMmI0YTM3
YjI4YjQ5ZTMwZDRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6Omph
dmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkK
IHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0LCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4gdGFzaykKIHsKICAgICBjb25z
dCBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdp
bmRvd0Jhc2UqPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soSlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9NV2luZG93QmFz
ZSopdGhpc09iamVjdCwgdGFzaykpOworICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFRhc2s+KChK
U0RPTVdpbmRvd0Jhc2UqKXRoaXNPYmplY3QsIHRhc2spKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93U2hlbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGJjNDJh
YmE0Yzg0NTU5ZmNjZDc2Y2RlMTNkOTI1NDg4NDJlM2M1ZTIuLjFjZjc3YzE3NDcxMGFkMTdiMGI4
MzExYmY4MmZkYmFhZWYxMjY4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBi
b29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVk
KGNvbnN0IEpTR2xvYmFsT2JqZWN0Kgogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVl
dWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgUGFzc1JlZlB0
cjxNaWNyb3Rhc2s+IHRhc2spCiB7CiAgICAgY29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01HbG9iYWxPYmplY3QqKXRoaXNP
YmplY3QsIHRhc2spKTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RUYXNrPigoSlNET01HbG9i
YWxPYmplY3QqKXRoaXNPYmplY3QsIHRhc2spKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xv
YmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IGY3OTVkZDBkNjJiNjgwNGMwODM3ZGVjODY4ZDA4MDhmOWYzZDAw
ODQuLmFjMDM5OTRjN2IwN2E2MDRkMDJkMDQ3MWM3Njk3YWVmYzZhMmE0MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0z
MjQ4LDcgKzMyNDgsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzQ29udGV4
dFRocmVhZCgpKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRlbGV0ZSBt
X2RhdGE7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBlbHNlXG4iKTsKLSAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgY29udGV4dC0+cG9zdFRhc2soRGVsZXRlQ2FsbGJh
Y2tEYXRhVGFzazo6Y3JlYXRlKG1fZGF0YSkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGVsZXRlQ2FsbGJh
Y2tEYXRhVGFzaz4obV9kYXRhKSk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZm5k
ZWYgTkRFQlVHXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBtX2RhdGEgPSAwO1xu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Ny
b3NzVGhyZWFkVGFzay5oCmluZGV4IDZjYzVmODQyMTU2ZDIwZTgwODY1Y2EzNDg1NjI4ZDFhNzI1
NzdkZDIuLjFlNjI0ZWU0OWEyMGM3ZTVlODdjMzBjMmFmZDRkN2E3OTcxN2E3YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJD
cm9zc1RocmVhZENvcGllci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw4ICs1MSw4
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UGFz
c1JlZlB0cjxUPj4gewogICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxUPiBQYXJhbVR5cGU7CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFBhc3NP
d25QdHI8VD4+IHsKLSAgICB0eXBlZGVmIFBhc3NPd25QdHI8VD4gUGFyYW1UeXBlOwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkVGFza1RyYWl0czxzdGQ6OnVuaXF1ZV9w
dHI8VD4+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxUPiBQYXJhbVR5cGU7CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxPgpAQCAtNjMsMjEgKzYyLDE2IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIENyb3NzVGhyZWFkVGFzazE8UDEsIE1QMT4gQ3Jvc3NUaHJl
YWRUYXNrOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAxPjo6
UGFyYW1UeXBlIFBhcmFtMTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFz
az4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIx
KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFzazEoTWV0aG9kIG1ldGhv
ZCwgUGFyYW0xIHBhcmFtZXRlcjEpCiAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQotICAgICAg
ICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAsIG1fcGFyYW1ldGVyMShzdGQ6
OmZvcndhcmQ8UGFyYW0xPihwYXJhbWV0ZXIxKSkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIHsKLSAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxKTsK
KyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyMSkpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTkzLDIyICs4NywxNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOwog
ICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBl
IFBhcmFtMjsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRl
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwg
cGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1Ro
cmVhZFRhc2syKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMikKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIx
KHBhcmFtZXRlcjEpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCisgICAgICAg
ICwgbV9wYXJhbWV0ZXIxKHN0ZDo6Zm9yd2FyZDxQYXJhbTE+KHBhcmFtZXRlcjEpKQorICAgICAg
ICAsIG1fcGFyYW1ldGVyMihzdGQ6OmZvcndhcmQ8UGFyYW0yPihwYXJhbWV0ZXIyKSkKICAgICB7
CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgKCptX21ldGhvZCkoY29u
dGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIpOworICAgICAgICAoKm1fbWV0aG9kKShj
b250ZXh0LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIxKSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyMikp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEyNiwyMyArMTE1LDE4IEBAIHB1YmxpYzoKICAgICB0
eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJh
bTI7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJh
bVR5cGUgUGFyYW0zOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBj
cmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIy
LCBQYXJhbTMgcGFyYW1ldGVyMykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVy
MykpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2szKE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMpCiAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQotICAgICAgICAsIG1fcGFyYW1ldGVyMShw
YXJhbWV0ZXIxKQotICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJhbWV0ZXIyKQotICAgICAgICAs
IG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQorICAgICAgICAsIG1fcGFyYW1ldGVyMShzdGQ6OmZv
cndhcmQ8UGFyYW0xPihwYXJhbWV0ZXIxKSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIoc3RkOjpm
b3J3YXJkPFBhcmFtMj4ocGFyYW1ldGVyMikpCisgICAgICAgICwgbV9wYXJhbWV0ZXIzKHN0ZDo6
Zm9yd2FyZDxQYXJhbTM+KHBhcmFtZXRlcjMpKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1f
cGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsKKyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwg
c3RkOjptb3ZlKG1fcGFyYW1ldGVyMSksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjIpLCBzdGQ6Om1v
dmUobV9wYXJhbWV0ZXIzKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTYyLDI0ICsxNDYsMTkg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAz
Pjo6UGFyYW1UeXBlIFBhcmFtMzsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFz
a1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
cm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwg
UGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhv
ZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCkpOwotICAg
IH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2s0KE1ldGhvZCBtZXRob2QsIFBhcmFt
MSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFt
NCBwYXJhbWV0ZXI0KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3Bh
cmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikK
LSAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKLSAgICAgICAgLCBtX3BhcmFtZXRl
cjQocGFyYW1ldGVyNCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEoc3RkOjpmb3J3YXJkPFBhcmFt
MT4ocGFyYW1ldGVyMSkpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHN0ZDo6Zm9yd2FyZDxQYXJh
bTI+KHBhcmFtZXRlcjIpKQorICAgICAgICAsIG1fcGFyYW1ldGVyMyhzdGQ6OmZvcndhcmQ8UGFy
YW0zPihwYXJhbWV0ZXIzKSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQoc3RkOjpmb3J3YXJkPFBh
cmFtND4ocGFyYW1ldGVyNCkpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7
Ci0gICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIy
LCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7CisgICAgICAgICgqbV9tZXRob2QpKGNvbnRl
eHQsIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjEpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIyKSwgc3Rk
Ojptb3ZlKG1fcGFyYW1ldGVyMyksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjQpKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC0yMDEsMjUgKzE4MCwyMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBl
bmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwogICAgIHR5
cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFt
NTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhv
ZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBh
cmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1l
dGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSkpOwot
ICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2s1KE1ldGhvZCBtZXRob2QsIFBh
cmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBh
cmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKICAgICAgICAgOiBtX21ldGhvZCht
ZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgICAgICwgbV9w
YXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMp
Ci0gICAgICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCi0gICAgICAgICwgbV9wYXJhbWV0
ZXI1KHBhcmFtZXRlcjUpCisgICAgICAgICwgbV9wYXJhbWV0ZXIxKHN0ZDo6Zm9yd2FyZDxQYXJh
bTE+KHBhcmFtZXRlcjEpKQorICAgICAgICAsIG1fcGFyYW1ldGVyMihzdGQ6OmZvcndhcmQ8UGFy
YW0yPihwYXJhbWV0ZXIyKSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMoc3RkOjpmb3J3YXJkPFBh
cmFtMz4ocGFyYW1ldGVyMykpCisgICAgICAgICwgbV9wYXJhbWV0ZXI0KHN0ZDo6Zm9yd2FyZDxQ
YXJhbTQ+KHBhcmFtZXRlcjQpKQorICAgICAgICAsIG1fcGFyYW1ldGVyNShzdGQ6OmZvcndhcmQ8
UGFyYW01PihwYXJhbWV0ZXI1KSkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAg
IHsKLSAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRl
cjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUpOworICAgICAgICAo
Km1fbWV0aG9kKShjb250ZXh0LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXIxKSwgc3RkOjptb3ZlKG1f
cGFyYW1ldGVyMiksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjMpLCBzdGQ6Om1vdmUobV9wYXJhbWV0
ZXI0KSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyNSkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI0
MywyNiArMjE3LDIxIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFk
VGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBD
cm9zc1RocmVhZFRhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwogCi0gICAgc3RhdGlj
IFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0x
IHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00
IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwg
cGFyYW1ldGVyNikpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2s2KE1l
dGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0z
IHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02
IHBhcmFtZXRlcjYpCiAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQotICAgICAgICAsIG1fcGFy
YW1ldGVyMShwYXJhbWV0ZXIxKQotICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJhbWV0ZXIyKQot
ICAgICAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQotICAgICAgICAsIG1fcGFyYW1ldGVy
NChwYXJhbWV0ZXI0KQotICAgICAgICAsIG1fcGFyYW1ldGVyNShwYXJhbWV0ZXI1KQotICAgICAg
ICAsIG1fcGFyYW1ldGVyNihwYXJhbWV0ZXI2KQorICAgICAgICAsIG1fcGFyYW1ldGVyMShzdGQ6
OmZvcndhcmQ8UGFyYW0xPihwYXJhbWV0ZXIxKSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIoc3Rk
Ojpmb3J3YXJkPFBhcmFtMj4ocGFyYW1ldGVyMikpCisgICAgICAgICwgbV9wYXJhbWV0ZXIzKHN0
ZDo6Zm9yd2FyZDxQYXJhbTM+KHBhcmFtZXRlcjMpKQorICAgICAgICAsIG1fcGFyYW1ldGVyNChz
dGQ6OmZvcndhcmQ8UGFyYW00PihwYXJhbWV0ZXI0KSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjUo
c3RkOjpmb3J3YXJkPFBhcmFtNT4ocGFyYW1ldGVyNSkpCisgICAgICAgICwgbV9wYXJhbWV0ZXI2
KHN0ZDo6Zm9yd2FyZDxQYXJhbTY+KHBhcmFtZXRlcjYpKQogICAgIHsKICAgICB9CiAKK3ByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRl
cjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVy
NSwgbV9wYXJhbWV0ZXI2KTsKKyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgc3RkOjptb3Zl
KG1fcGFyYW1ldGVyMSksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjIpLCBzdGQ6Om1vdmUobV9wYXJh
bWV0ZXIzKSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyNCksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjUp
LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI2KSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjg4LDI3
ICsyNTcsMjIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNr
VHJhaXRzPFA2Pjo6UGFyYW1UeXBlIFBhcmFtNjsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3Nz
VGhyZWFkVGFza1RyYWl0czxQNz46OlBhcmFtVHlwZSBQYXJhbTc7CiAKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFy
YW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFy
YW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFy
YW1ldGVyNykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRU
YXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVy
NCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNykpOwotICAgIH0KLQotcHJpdmF0
ZToKICAgICBDcm9zc1RocmVhZFRhc2s3KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIx
LCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0
LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3
KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFy
YW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBt
X3BhcmFtZXRlcjMocGFyYW1ldGVyMykKLSAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVy
NCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKLSAgICAgICAgLCBtX3BhcmFt
ZXRlcjYocGFyYW1ldGVyNikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjcocGFyYW1ldGVyNykKKyAg
ICAgICAgLCBtX3BhcmFtZXRlcjEoc3RkOjpmb3J3YXJkPFBhcmFtMT4ocGFyYW1ldGVyMSkpCisg
ICAgICAgICwgbV9wYXJhbWV0ZXIyKHN0ZDo6Zm9yd2FyZDxQYXJhbTI+KHBhcmFtZXRlcjIpKQor
ICAgICAgICAsIG1fcGFyYW1ldGVyMyhzdGQ6OmZvcndhcmQ8UGFyYW0zPihwYXJhbWV0ZXIzKSkK
KyAgICAgICAgLCBtX3BhcmFtZXRlcjQoc3RkOjpmb3J3YXJkPFBhcmFtND4ocGFyYW1ldGVyNCkp
CisgICAgICAgICwgbV9wYXJhbWV0ZXI1KHN0ZDo6Zm9yd2FyZDxQYXJhbTU+KHBhcmFtZXRlcjUp
KQorICAgICAgICAsIG1fcGFyYW1ldGVyNihzdGQ6OmZvcndhcmQ8UGFyYW02PihwYXJhbWV0ZXI2
KSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjcoc3RkOjpmb3J3YXJkPFBhcmFtNz4ocGFyYW1ldGVy
NykpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgICgqbV9t
ZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMs
IG1fcGFyYW1ldGVyNCwgbV9wYXJhbWV0ZXI1LCBtX3BhcmFtZXRlcjYsIG1fcGFyYW1ldGVyNyk7
CisgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjEpLCBz
dGQ6Om1vdmUobV9wYXJhbWV0ZXIyKSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyMyksIHN0ZDo6bW92
ZShtX3BhcmFtZXRlcjQpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI1KSwgc3RkOjptb3ZlKG1fcGFy
YW1ldGVyNiksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjcpKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0zMzUsMzEgKzI5OSwyNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1Ro
cmVhZFRhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwogICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA3Pjo6UGFyYW1UeXBlIFBhcmFtNzsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7
Ci0gICAgCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0
aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMg
cGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYg
cGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJh
bWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBw
YXJhbWV0ZXI2LCBwYXJhbWV0ZXI3LCBwYXJhbWV0ZXI4KSk7Ci0gICAgfQotICAgIAotcHJpdmF0
ZToKKwogICAgIENyb3NzVGhyZWFkVGFzazgoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRl
cjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRl
cjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRl
cjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQogICAgIDogbV9tZXRob2QobWV0aG9kKQotICAgICwgbV9w
YXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAg
ICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQotICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRl
cjQpCi0gICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKLSAgICAsIG1fcGFyYW1ldGVyNihw
YXJhbWV0ZXI2KQotICAgICwgbV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCi0gICAgLCBtX3BhcmFt
ZXRlcjgocGFyYW1ldGVyOCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEoc3RkOjpmb3J3YXJkPFBh
cmFtMT4ocGFyYW1ldGVyMSkpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHN0ZDo6Zm9yd2FyZDxQ
YXJhbTI+KHBhcmFtZXRlcjIpKQorICAgICAgICAsIG1fcGFyYW1ldGVyMyhzdGQ6OmZvcndhcmQ8
UGFyYW0zPihwYXJhbWV0ZXIzKSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQoc3RkOjpmb3J3YXJk
PFBhcmFtND4ocGFyYW1ldGVyNCkpCisgICAgICAgICwgbV9wYXJhbWV0ZXI1KHN0ZDo6Zm9yd2Fy
ZDxQYXJhbTU+KHBhcmFtZXRlcjUpKQorICAgICAgICAsIG1fcGFyYW1ldGVyNihzdGQ6OmZvcndh
cmQ8UGFyYW02PihwYXJhbWV0ZXI2KSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjcoc3RkOjpmb3J3
YXJkPFBhcmFtNz4ocGFyYW1ldGVyNykpCisgICAgICAgICwgbV9wYXJhbWV0ZXI4KHN0ZDo6Zm9y
d2FyZDxQYXJhbTg+KHBhcmFtZXRlcjgpKQogICAgIHsKICAgICB9Ci0gICAgCisKK3ByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEs
IG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwg
bV9wYXJhbWV0ZXI2LCBtX3BhcmFtZXRlcjcsIG1fcGFyYW1ldGVyOCk7CisgICAgICAgICgqbV9t
ZXRob2QpKGNvbnRleHQsIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjEpLCBzdGQ6Om1vdmUobV9wYXJh
bWV0ZXIyKSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyMyksIHN0ZDo6bW92ZShtX3BhcmFtZXRlcjQp
LCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI1KSwgc3RkOjptb3ZlKG1fcGFyYW1ldGVyNiksIHN0ZDo6
bW92ZShtX3BhcmFtZXRlcjcpLCBzdGQ6Om1vdmUobV9wYXJhbWV0ZXI4KSk7CiAgICAgfQotICAg
IAorCiBwcml2YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7
CkBAIC0zNzMsMTAyICszMzIsMTAyIEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgTVAxPgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQog
ewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2sxPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAxPjo6VHlwZSwgTVAxPjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkVGFzazE8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDE+
PigKICAgICAgICAgbWV0aG9kLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHko
cGFyYW1ldGVyMSkpOworICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkoc3RkOjpt
b3ZlKHBhcmFtZXRlcjEpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBN
UDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDI+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAo
Km1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyKSwKICAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgcmV0dXJuIENyb3Nz
VGhyZWFkVGFzazI8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyPjo6Y3JlYXRlKAorICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazI8dHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6
VHlwZSwgTVAyPj4oCiAgICAgICAgIG1ldGhvZCwKLSAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1l
dGVyMikpOworICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkoc3RkOjptb3ZlKHBh
cmFtZXRlcjEpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHN0ZDo6bW92ZShwYXJhbWV0
ZXIyKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotUGFzc093blB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6
OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tU
YXNrKAogICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1Q
MiwgTVAzKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIs
IGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2szPHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+
OjpUeXBlLCBNUDM+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NU
aHJlYWRUYXNrMzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzPj4oCiAgICAgICAgIG1ldGhvZCwKLSAgICAgICAgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQ
Mj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29w
eShwYXJhbWV0ZXIzKSk7CisgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShzdGQ6
Om1vdmUocGFyYW1ldGVyMSkpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkoc3RkOjptb3Zl
KHBhcmFtZXRlcjIpKSwKKyAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHN0ZDo6
bW92ZShwYXJhbWV0ZXIzKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
TVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAz
LCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCpt
ZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBh
cmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0KQogewotICAgIHJldHVybiBDcm9zc1RocmVh
ZFRhc2s0PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDM+OjpUeXBlLCBNUDMsCi0gICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFA0Pjo6VHlwZSwgTVA0Pjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkVGFzazQ8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEs
IHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQ+PigKICAgICAgICAgICAgIG1ldGhvZCwKLSAgICAgICAg
ICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFy
YW1ldGVyNCkpOworICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHN0ZDo6
bW92ZShwYXJhbWV0ZXIxKSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShzdGQ6Om1vdmUo
cGFyYW1ldGVyMikpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHN0
ZDo6bW92ZShwYXJhbWV0ZXIzKSksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShzdGQ6Om1v
dmUocGFyYW1ldGVyNCkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLVBh
c3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNr
KAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNh
bGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
TVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25z
dCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0
ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNr
NTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46
OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDU+Ojpj
cmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNTx0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6
VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUs
IE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDU+PigKICAgICAg
ICAgICAgIG1ldGhvZCwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShw
YXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAg
ICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1Ro
cmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSkpOworICAgICAgICAgICAgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+Ojpjb3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXIxKSksIENyb3NzVGhyZWFkQ29waWVy
PFAyPjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyMikpLAorICAgICAgICAgICAgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDM+Ojpjb3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXIzKSksIENyb3NzVGhyZWFkQ29w
aWVyPFA0Pjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyNCkpLAorICAgICAgICAgICAgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXI1KSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAy
LCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0
eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgotUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2so
CitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2Fs
bGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwg
Y29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFy
YW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2KQogewot
ICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2s2PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCi0gICAgICAgIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpU
eXBlLCBNUDY+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJl
YWRUYXNrNjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBN
UDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2Pj4oCiAgICAgICAg
ICAgICBtZXRob2QsCi0gICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFy
YW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAg
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHko
cGFyYW1ldGVyNikpOworICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHN0
ZDo6bW92ZShwYXJhbWV0ZXIxKSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShzdGQ6Om1v
dmUocGFyYW1ldGVyMikpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHN0ZDo6bW92ZShwYXJhbWV0ZXIzKSksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShzdGQ6
Om1vdmUocGFyYW1ldGVyNCkpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpj
b3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXI1KSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShz
dGQ6Om1vdmUocGFyYW1ldGVyNikpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVu
YW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1Q
NSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4K
LVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tU
YXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0
ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKICAgICBjb25zdCBQMSYgcGFy
YW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25z
dCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0
ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNr
Nzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAzPjo6VHlwZSwgTVAzLAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFk
VGFzazc8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMz46OlR5cGUsIE1QMywKICAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNiwKLSAgICAgICAgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBNUDc+OjpjcmVhdGUoCisgICAgICAg
IHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3Pj4oCiAgICAgICAgICAg
ICBtZXRob2QsCi0gICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1l
dGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAg
ICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFy
YW1ldGVyNiksCi0gICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1l
dGVyNykpOworICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHN0ZDo6bW92
ZShwYXJhbWV0ZXIxKSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShzdGQ6Om1vdmUocGFy
YW1ldGVyMikpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHN0ZDo6
bW92ZShwYXJhbWV0ZXIzKSksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShzdGQ6Om1vdmUo
cGFyYW1ldGVyNCkpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHN0
ZDo6bW92ZShwYXJhbWV0ZXI1KSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShzdGQ6Om1v
dmUocGFyYW1ldGVyNikpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5
KHN0ZDo6bW92ZShwYXJhbWV0ZXI3KSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlw
ZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUg
TVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3
LCB0eXBlbmFtZSBQOCwgdHlwZW5hbWUgTVA4PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKm1l
dGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBN
UDYsIE1QNywgTVA4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1l
dGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQ
NSYgcGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3
LCBjb25zdCBQOCYgcGFyYW1ldGVyOCkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrODx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6VHlwZSwgTVAzLAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFz
azg8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMz46OlR5cGUsIE1QMywKICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5
cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDUsIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2LAotICAgIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
OD46OlR5cGUsIE1QOD46OmNyZWF0ZSgKKyAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
Nz46OlR5cGUsIE1QNywgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+OjpUeXBlLCBNUDg+
PigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1Ro
cmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpj
b3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGll
cjxQNj46OmNvcHkocGFyYW1ldGVyNiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFt
ZXRlcjcpLCBDcm9zc1RocmVhZENvcGllcjxQOD46OmNvcHkocGFyYW1ldGVyOCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShzdGQ6Om1vdmUocGFyYW1ldGVyMSkpLCBDcm9zc1RocmVhZENv
cGllcjxQMj46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjIpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQ
Mz46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRlcjMpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpj
b3B5KHN0ZDo6bW92ZShwYXJhbWV0ZXI0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHN0
ZDo6bW92ZShwYXJhbWV0ZXI1KSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShzdGQ6Om1v
dmUocGFyYW1ldGVyNikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShzdGQ6Om1vdmUocGFy
YW1ldGVyNykpLCBDcm9zc1RocmVhZENvcGllcjxQOD46OmNvcHkoc3RkOjptb3ZlKHBhcmFtZXRl
cjgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDZkZjg1Yzc3NTNmOGNmZTMxMzIxYWQwYjU3N2YyZmVjN2M0NDQ5NTYuLmUzZGUwOWZi
NzA5Y2U3NDM3MmNhZWQ4YjM5ZGU5NDI4N2FmMTE3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNDg2MCw3ICs0ODYwLDcgQEAgdm9pZCBEb2N1bWVudDo6cGFyc2VETlNQcmVmZXRjaENv
bnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJiBkbnNQcmVmZXRjaENvbnRyb2wpCiB2b2lkIERvY3Vt
ZW50OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFz
ayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7
CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QWRkQ29uc29sZU1lc3NhZ2VUYXNr
Pihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQ4NzEsNyArNDg3MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2b2lkIERvY3VtZW50
OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAg
cG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrOjpjcmVhdGUoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSkpOworICAgICAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFkZENvbnNvbGVNZXNz
YWdlVGFzaz4oc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00ODg3LDE0ICs0ODg3LDE0IEBAIFNlY3VyaXR5T3JpZ2luKiBEb2N1bWVudDo6dG9w
T3JpZ2luKCkgY29uc3QKIHN0cnVjdCBQZXJmb3JtVGFza0NvbnRleHQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBlcmZvcm1UYXNrQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFBlcmZvcm1UYXNrQ29udGV4dChXZWFrUHRyPERvY3VtZW50PiBkb2N1
bWVudCwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQorICAg
IFBlcmZvcm1UYXNrQ29udGV4dChXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVudCwgc3RkOjp1bmlx
dWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiAgICAgICAgIDogZG9j
dW1lbnRSZWZlcmVuY2UoZG9jdW1lbnQpCi0gICAgICAgICwgdGFzayh0YXNrKQorICAgICAgICAs
IHRhc2soc3RkOjptb3ZlKHRhc2spKQogICAgIHsKICAgICB9CiAKICAgICBXZWFrUHRyPERvY3Vt
ZW50PiBkb2N1bWVudFJlZmVyZW5jZTsKLSAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzazsKIH07CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZFJlY2VpdmVUYXNrKHZvaWQq
IHVudHlwZWRDb250ZXh0KQpAQCAtNDkxNywxNSArNDkxNywxNSBAQCB2b2lkIERvY3VtZW50Ojpk
aWRSZWNlaXZlVGFzayh2b2lkKiB1bnR5cGVkQ29udGV4dCkKICAgICBjb250ZXh0LT50YXNrLT5w
ZXJmb3JtVGFzayhkb2N1bWVudCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKFBhc3NP
d25QdHI8VGFzaz4gdGFzaykKK3ZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxUYXNrPiB0YXNrKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkUmVjZWl2ZVRhc2ssIG5l
dyBQZXJmb3JtVGFza0NvbnRleHQobV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHRhc2sp
KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGRpZFJlY2VpdmVUYXNrLCBuZXcgUGVyZm9ybVRhc2tD
b250ZXh0KG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpLCBzdGQ6Om1vdmUodGFzaykpKTsK
IH0KIAogdm9pZCBEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVu
dD4mKQogewogICAgIHdoaWxlICghbV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IE93blB0cjxUYXNrPiB0YXNrID0gbV9wZW5kaW5nVGFza3NbMF0ucmVsZWFzZSgpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gdGFzayA9IHN0ZDo6bW92ZShtX3BlbmRpbmdUYXNrc1sw
XSk7CiAgICAgICAgIG1fcGVuZGluZ1Rhc2tzLnJlbW92ZSgwKTsKICAgICAgICAgdGFzay0+cGVy
Zm9ybVRhc2sodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzYWU3ZjQ5ZmI0
NDMyZjJhYmU3YmE0OWQ4Yzk5MWJmYzhlNGQ4NWRlLi4zN2JlZjdjNWQyNTJhMDI0ZjQ1NzQyNzA3
MDYxZDA0M2VhN2JhMTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTU5LDcgKzk1OSw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRE5TUHJlZmV0Y2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0ROU1ByZWZldGNoRW5hYmxlZDsgfQogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRy
b2xIZWFkZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFz
c093blB0cjxUYXNrPikgb3ZlcnJpZGU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQn
cyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKHN0ZDo6
dW5pcXVlX3B0cjxUYXNrPikgb3ZlcnJpZGU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRl
eHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwpAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fcGVuZGluZ1Rhc2tzVGltZXI7Ci0g
ICAgVmVjdG9yPE93blB0cjxUYXNrPj4gbV9wZW5kaW5nVGFza3M7CisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxUYXNrPj4gbV9wZW5kaW5nVGFza3M7CiAKICNpZiBFTkFCTEUoSU9TX1RFWFRf
QVVUT1NJWklORykKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAppbmRleCBjYTYwNDFmOWEwNTU0ODIyZDVlYWMzZWM2ZDYxMmY2OTI2MmIx
ZTU0Li5kZmFlNTE1MzQ5MTQ5MTQ5MDZlYzQyYTdlYjc5OGMxYTUyYTkyNzZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xMjMsNyArMTIz
LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQog
CiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2Vz
U29vbigpCiB7Ci0gICAgcG9zdFRhc2soUHJvY2Vzc01lc3NhZ2VzU29vblRhc2s6OmNyZWF0ZSgp
KTsKKyAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNr
PigpKTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lc3NhZ2VQ
b3J0RXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CmluZGV4IDFjN2YwZGFlMWZjMDJmYTA0Y2IyMzk1MjE0Yjk4YjEzMTAwMTdiODEuLjRjNmVlNDE1
N2NlOGU1MjExOTY3MWM0M2NhZTFlNjdiNzFiMDQwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPikg
PSAwOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4pID0g
MDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNs
eS4KIAogICAgIC8vIEdldHMgdGhlIG5leHQgaWQgaW4gYSBjaXJjdWxhciBzZXF1ZW5jZSBmcm9t
IDEgdG8gMl4zMS0xLgogICAgIGludCBjaXJjdWxhclNlcXVlbnRpYWxJRCgpOwpAQCAtMTU3LDE4
ICsxNTcsMTUgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNz
YWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
T3duUHRyPEFkZENvbnNvbGVNZXNzYWdlVGFzaz4gY3JlYXRlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBZGRDb25zb2xlTWVzc2FnZVRhc2soc291
cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwotICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgcHJpdmF0
ZToKICAgICAgICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgICAgIDog
bV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAgLCBtX2xldmVsKGxldmVsKQogICAgICAgICAg
ICAgLCBtX21lc3NhZ2UobWVzc2FnZS5pc29sYXRlZENvcHkoKSkKICAgICAgICAgewogICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlU291cmNlIG1fc291cmNlOwogICAg
ICAgICBNZXNzYWdlTGV2ZWwgbV9sZXZlbDsKICAgICAgICAgU3RyaW5nIG1fbWVzc2FnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwCmluZGV4IGI1NDEwNWZlYTRmMWYzZGMwYmI5
ZjZjZjc1Yjc5NTQ4YTdiNjJiMmIuLmY0Y2VmNmU1N2EyYzMzYzNhNmZhZDRmYTFhYmUxOTRmNWVh
YzYzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtNDAsMjMgKzQw
LDE4IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIERpc3BhdGNoQ2FsbGJhY2tUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPERpc3BhdGNoQ2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTdHJpbmdDYWxs
YmFjaz4gY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgZGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgRGlzcGF0Y2hDYWxsYmFja1Rhc2soY2FsbGJhY2ssIGRhdGEpKTsKLSAg
ICB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2Rh
dGEpOwogICAgIH0KIAotcHJpdmF0ZToKICAgICBEaXNwYXRjaENhbGxiYWNrVGFzayhQYXNzUmVm
UHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAgewog
ICAgIH0KIAorcHJpdmF0ZToKICAgICBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IG1fY2FsbGJhY2s7
CiAgICAgY29uc3QgU3RyaW5nIG1fZGF0YTsKIH07CkBAIC02NSw3ICs2MCw3IEBAIHByaXZhdGU6
CiAKIHZvaWQgU3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIGNvbnRleHQtPnBv
c3RUYXNrKERpc3BhdGNoQ2FsbGJhY2tUYXNrOjpjcmVhdGUodGhpcywgZGF0YSkpOworICAgIGNv
bnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGF0Y2hDYWxsYmFja1Rhc2s+KHRo
aXMsIGRhdGEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQxMGVmN2VkMjFm
YzYzOWI3YzIzYjMzYzljMjQzNzNmNDQxNzU2NTAuLmU3NWNmNjA1Zjg1NjU2NDA1MTg4ZmZmZGI3
NzlhNTQ3ODNlMzE1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJXb3JrZXJMb2Fk
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAwLDEyICs5OSwxMiBAQCBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjp+TWFpblRocmVhZEJyaWRnZSgpCiB7CiB9
CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRo
cmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNYWluVGhy
ZWFkQnJpZGdlKiB0aGlzUHRyLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4gcmVxdWVzdERhdGEsIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnMsIGNvbnN0
IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlcikKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyLCBzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSwgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
dG9Eb2N1bWVudChjb250ZXh0KTsKIAotICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0YSkpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChzdGQ6
Om1vdmUocmVxdWVzdERhdGEpKSk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUFJlZmVycmVyKG91dGdv
aW5nUmVmZXJyZXIpOwogICAgIC8vIEZJWE1FOiBJZiB0aGUgYSBzaXRlIHJlcXVlc3RzIGEgbG9j
YWwgcmVzb3VyY2UsIHRoZW4gdGhpcyB3aWxsIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlIGJ1dCB0
aGUgc3luYyBwYXRoCiAgICAgLy8gd2lsbCByZXR1cm4gYSAwIHZhbHVlLiAgRWl0aGVyIHRoaXMg
c2hvdWxkIHJldHVybiAwIG9yIHRoZSBvdGhlciBjb2RlIHBhdGggc2hvdWxkIGRvIGEgY2FsbGJh
Y2sgd2l0aApAQCAtMTczLDEwICsxNzIsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnkKICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZFNlbmREYXRhLCBtX3dvcmtlckNsaWVu
dFdyYXBwZXIsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwgbV90YXNrTW9kZSk7CiB9
CiAKLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZVJlc3BvbnNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBQ
YXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IHJlc3BvbnNlRGF0YSkK
K3N0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZVJlc3BvbnNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVzcG9uc2VEYXRh
KQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxT
Y29wZSgpKTsKLSAgICBPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4gcmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZTo6YWRvcHQocmVzcG9uc2VEYXRhKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291
cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2U6OmFkb3B0KHN0ZDo6bW92ZShy
ZXNwb25zZURhdGEpKSk7CiAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGlkZW50aWZpZXIsICpyZXNwb25zZSk7CiB9CiAKQEAgLTE4NSwxNyArMTg0LDE3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURp
ZFJlY2VpdmVSZXNwb25zZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBpZGVudGlmaWVyLCByZXNw
b25zZSksIG1fdGFza01vZGUpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURp
ZFJlY2VpdmVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFzc093blB0
cjxWZWN0b3I8Y2hhcj4+IHZlY3RvckRhdGEpCitzdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29w
ZURpZFJlY2VpdmVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgVmVjdG9y
PGNoYXI+IHZlY3RvckRhdGEpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVEYXRhKHZlY3RvckRhdGEtPmRhdGEoKSwgdmVjdG9yRGF0YS0+c2l6ZSgpKTsKKyAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JEYXRhLmRhdGEoKSwgdmVj
dG9yRGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQogewotICAgIE93blB0cjxWZWN0b3I8Y2hhcj4+IHZlY3RvciA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8Y2hhcj4oZGF0YUxlbmd0aCkpOyAvLyBuZWVkcyB0byBiZSBhbiBPd25QdHIgZm9yIHVz
YWdlIHdpdGggY3JlYXRlQ2FsbGJhY2tUYXNrLgotICAgIG1lbWNweSh2ZWN0b3ItPmRhdGEoKSwg
ZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRS
ZWNlaXZlRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB2ZWN0b3IucmVsZWFzZSgpKSwgbV90
YXNrTW9kZSk7CisgICAgVmVjdG9yPGNoYXI+IHZlY3RvciA9IFZlY3RvcjxjaGFyPihkYXRhTGVu
Z3RoKTsKKyAgICBtZW1jcHkodmVjdG9yLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlRGF0YSwgbV93b3JrZXJDbGll
bnRXcmFwcGVyLCBzdGQ6Om1vdmUodmVjdG9yKSksIG1fdGFza01vZGUpOwogfQogCiBzdGF0aWMg
dm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZEZpbmlzaExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3Jr
ZXJDbGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hU
aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgK
aW5kZXggNGRiMGY0NTM0MmI3MWRjYWJmMjRkOGUxZTY5NDBiZWMyYzQ4OWVmMy4uNTRmYjk4MzU1
OTI3MTcwMzNlNWVkYWJlNTNiZWNiYmJhODRlMzIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnRXcmFwcGVyLmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CkBAIC0xMDgsNyArMTA3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIH5NYWluVGhyZWFkQnJp
ZGdlKCk7CiAKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqLCBQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIFRocmVhZGFibGVMb2FkZXJPcHRpb25zLCBj
b25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpOworICAgICAgICAgICAgc3RhdGljIHZvaWQg
bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWFpblRocmVh
ZEJyaWRnZSosIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+
LCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVy
KTsKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5jZWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDE3NjNmMDZm
ZWVjOWYxNGEzZDNkZWJkZDFlMDMxODNhODMxYzEwYjAuLjA5ZmQ5NWJmZmIzN2U4MDYxODZiMzcx
ZmRjNmYyYzFjZDA5Mjg3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMDk5LDExICsxMDk5LDYg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hl
U2l6ZUNhbGxiYWNrKCkKIAogY2xhc3MgQ2FsbENhY2hlTGlzdGVuZXJUYXNrIDogcHVibGljIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENhbGxDYWNoZUxpc3RlbmVyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgaW50IHBy
b2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENhbGxDYWNoZUxpc3RlbmVyVGFzayhsb2FkZXIsIGV2ZW50SUQsIHByb2dyZXNz
VG90YWwsIHByb2dyZXNzRG9uZSkpOwotICAgIH0KLQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgCkBAIC0xMTE3LDcgKzExMTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUo
bV9ldmVudElELCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKLXBy
aXZhdGU6CiAgICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgaW50IHBy
b2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpCiAgICAgICAgIDogbV9kb2N1bWVudExvYWRl
cihsb2FkZXIpCiAgICAgICAgICwgbV9ldmVudElEKGV2ZW50SUQpCkBAIC0xMTI2LDYgKzExMjAs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRyPERvY3Vt
ZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVyOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpF
dmVudElEIG1fZXZlbnRJRDsKICAgICBpbnQgbV9wcm9ncmVzc1RvdGFsOwpAQCAtMTE0Nyw3ICsx
MTQyLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soQXBw
bGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnQKICAgICAKICAgICBBU1NFUlQoZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gbG9hZGVyKTsKIAotICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5wb3N0VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2
ZW50SUQsIHByb2dyZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOworICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPENhbGxDYWNoZUxpc3RlbmVyVGFzaz4obG9h
ZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldFVwZGF0ZVN0YXR1cyhVcGRhdGVTdGF0dXMgc3RhdHVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNjUy
NDIyY2Y2NDc4MmJhNTYyM2Q2YmVhMzhjZjQwYmExNWJjY2ZjOC4uZWY3MDYwZDlkMGUxYmRkNmRl
Y2U2NDRmZjAyNWM5NGRjYjI1MzJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCkBAIC04MjUsOSArODI1LDkgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVt
b3ZlUmVxdWVzdEZyb21DYWNoZUltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJl
c28KICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlKTsKIH0KIAotdm9pZCBN
ZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8V2ViQ29yZTo6Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSkKK3ZvaWQgTWVtb3J5Q2FjaGU6OmNyb3NzVGhy
ZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0
RGF0YSkKIHsKLSAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVx
dWVzdDo6YWRvcHQocmVxdWVzdERhdGEpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VS
ZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQoc3RkOjptb3ZlKHJlcXVlc3RE
YXRhKSkpOwogICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbUNhY2hlSW1wbChjb250
ZXh0LCAqcmVxdWVzdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgKaW5kZXggYzAyM2E5NzI1ODMyNzljZDQ4MDFjZGVjZWNjYWEzYTU3MTU5NDk5Zi4uNmM3
MTE4N2NmMjBjNGEyNDhhZDBlM2Y4NmMyZDczYjcwNTcxZDA1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZXZpY3QoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbW92
ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RG
cm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPik7CisgICAgc3RhdGljIHZvaWQgY3Jvc3NUaHJlYWRSZW1vdmVS
ZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CiAKICAgICBib29sIG1fZGlzYWJsZWQ7
ICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgY2FjaGUgaXMgZW5hYmxlZC4KICAgICBib29sIG1fcHJ1
bmVFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwCmluZGV4IDBhYWVhNzliYmYxZTEwNTc4MThkMjVlYTc0ZmZmZmI5OTFkMWU4OTIuLmRiMGI2
MTVhMWU0NTI0ZWFjZjZkYTlmMzc1NzExNTFhZGM1MTQyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKQEAgLTE1NSwxOCArMTU1LDExIEBAIENP
TVBJTEVfQVNTRVJUKChzdGQ6OmlzX3NhbWU8CiAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSks
CiAgICAgICAgICAgICAgICBSYXdQb2ludGVyUmVmQ291bnRlZFRlc3QpOwogCi0vLyBWZXJpZnkg
dGhhdCBQYXNzT3duUHRyIGdldHMgcGFzc2VkIHRocm91Z2guCisvLyBWZXJpZnkgdGhhdCBzdGQ6
OnVuaXF1ZV9wdHIgZ2V0cyBwYXNzZWQgdGhyb3VnaC4KIENPTVBJTEVfQVNTRVJUKChzdGQ6Omlz
X3NhbWU8Ci0gICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPGZsb2F0PiwKLSAgICAgICAgICAg
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFBhc3NPd25QdHI8ZmxvYXQ+Pjo6VHlwZQorICAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPHN0ZDo6dW5pcXVlX3B0cjxmbG9hdD4+OjpUeXBlCiAgICAgICAgICAg
ICAgICAgICA+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICBQYXNzT3duUHRyVGVzdCk7Ci0KLS8v
IFZlcmlmeSB0aGF0IFBhc3NPd25QdHIgZG9lcyBub3QgZ2V0IHBhc3NlZCB0aHJvdWdoLgotQ09N
UElMRV9BU1NFUlQoKHN0ZDo6aXNfc2FtZTwKLSAgICAgICAgICAgICAgICAgIGludCwKLSAgICAg
ICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPE93blB0cjxmbG9hdD4+OjpUeXBlCi0gICAg
ICAgICAgICAgICAgICA+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICBPd25QdHJUZXN0KTsKKyAg
ICAgICAgICAgICAgIFVuaXF1ZVB0clRlc3QpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCA1OWQwYWMy
MjE2Y2JlY2NmZTc1Nzg4YjNkNzY0NTEzYzBjNjg5NGEyLi4wMTJiNWJmZjg1M2ZmYzE3MjA2YzY0
ZWVhYjExMzg3MmM0NWJiN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTExMiwxNCArMTExLDIyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgUGFzc093blB0cjxU
Pj4gewotICAgICAgICB0eXBlZGVmIFBhc3NPd25QdHI8VD4gVHlwZTsKLSAgICAgICAgc3RhdGlj
IFR5cGUgY29weShUeXBlIG93blB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgc3RkOjp1bmlxdWVfcHRyPFQ+PiB7
CisgICAgICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFQ+IFR5cGU7CisgICAgICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VD4gY29weShzdGQ6OnVuaXF1ZV9wdHI8VD4gdW5pcXVlUHRyKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb3duUHRyOworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bW92ZSh1bmlxdWVQdHIpOwogICAgICAgICB9CiAgICAgfTsKIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+PiB7CisgICAgICAgIHR5cGVkZWYgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+IFR5cGU7CisgICAgICAgIHN0
YXRpYyBUeXBlIGNvcHkoVHlwZSB1bmlxdWVWZWN0b3IpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiB1bmlxdWVWZWN0b3I7CisgICAgICAgIH0KKyAgICB9OworICAgIAogICAgIHRlbXBs
YXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFVSTD4gewog
ICAgICAgICB0eXBlZGVmIFVSTCBUeXBlOwogICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0
IFVSTCYpOwpAQCAtMTM2LDEyICsxNDMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07
CiAKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBSZXNvdXJjZVJlcXVlc3Q+IHsKLSAgICAgICAgdHlwZWRlZiBQYXNzT3duUHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gVHlwZTsKKyAgICAgICAgdHlwZWRlZiBzdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBUeXBlOwogICAgICAgICBz
dGF0aWMgVHlwZSBjb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIH07CiAKICAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBSZXNv
dXJjZVJlc3BvbnNlPiB7Ci0gICAgICAgIHR5cGVkZWYgUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhPiBUeXBlOworICAgICAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBUeXBlOwogICAgICAgICBzdGF0aWMg
VHlwZSBjb3B5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCBhNDU5
M2I1ZTJlYzQzNjYwYzhiZTYxZGM4YWY4ZDRkM2YwZTI0M2QwLi5mZjlmOWZiMmNhZGFjMDUxYzlk
MTYzODM5ZjI2ZmIxOTExMmIzOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBIVFRQSGVhZGVy
TWFwOjp+SFRUUEhlYWRlck1hcCgpCiB7CiB9CiAKLVBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQ
SGVhZGVyTWFwRGF0YT4gSFRUUEhlYWRlck1hcDo6Y29weURhdGEoKSBjb25zdAorc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IEhUVFBIZWFkZXJNYXA6OmNvcHlE
YXRhKCkgY29uc3QKIHsKLSAgICBPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4g
ZGF0YSA9IGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhKCkpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBkYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPigpOwogICAgIGRhdGEt
PnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKIAogICAgIEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZF9pdCA9IGVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBiZWdpbigpOyBpdCAhPSBlbmRfaXQ7ICsraXQpCiAgICAgICAgIGRh
dGEtPnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihpdC0+a2V5LnN0cmluZygpLmlzb2xh
dGVkQ29weSgpLCBpdC0+dmFsdWUuaXNvbGF0ZWRDb3B5KCkpKTsKIAotICAgIHJldHVybiBkYXRh
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3RkOjptb3ZlKGRhdGEpOwogfQogCi12b2lkIEhUVFBI
ZWFkZXJNYXA6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4g
ZGF0YSkKK3ZvaWQgSFRUUEhlYWRlck1hcDo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkSFRUUEhlYWRlck1hcERhdGE+IGRhdGEpCiB7CiAgICAgY2xlYXIoKTsKICAgICBzaXplX3Qg
ZGF0YVNpemUgPSBkYXRhLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGY0ZTY3ODc0N2FkYzI3Y2ZkMGJlODMyYjI3ZDdl
NTliNzQyZjJhNjQuLjllOGQ3ZmMyY2ZlYzMxN2M0NjVjZTIzOWY3MDk2OGQ0YzEzNzg5ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBA
IC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSGFzaC5oPgpAQCAtNDYsMTAgKzQ1LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfkhUVFBIZWFkZXJNYXAoKTsKIAogICAgICAgICAvLyBHZXRzIGEgY29w
eSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KLSAg
ICAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBjb3B5RGF0YSgp
IGNvbnN0OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFw
RGF0YT4gY29weURhdGEoKSBjb25zdDsKKworICAgICAgICB2b2lkIGFkb3B0KHN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPik7CiAKLSAgICAgICAgdm9pZCBhZG9w
dChQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+KTsKLSAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogICAg
ICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CkBAIC01OCw3ICs1Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CiAgICAgICAgIFN0cmluZyBnZXQoY29u
c3QgY2hhciopIGNvbnN0OwogICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgICAgICAKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBhOTU2YmI4YzAxNWY1MTA3ZGEwYjBlYWZkM2Ez
ZjJhNmM2MzcwYjI5Li5lOTYzYjRhYTMyZTAyMmQxMWVmMGYyYTI4M2IyNDExZDkwNzE1YzBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAogICAg
IHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kj4odGhpcyk7CiB9CiAK
LVBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdChQ
YXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkKK3N0ZDo6dW5p
cXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpCiB7Ci0gICAg
T3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBSZXNvdXJjZVJl
cXVlc3QoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PigpOwogICAgIHJlcXVlc3QtPnNldFVS
TChkYXRhLT5tX3VybCk7CiAgICAgcmVxdWVzdC0+c2V0Q2FjaGVQb2xpY3koZGF0YS0+bV9jYWNo
ZVBvbGljeSk7CiAgICAgcmVxdWVzdC0+c2V0VGltZW91dEludGVydmFsKGRhdGEtPm1fdGltZW91
dEludGVydmFsKTsKQEAgLTU4LDcgKzU4LDcgQEAgUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+
IFJlc291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXMKICAg
ICByZXF1ZXN0LT5zZXRQcmlvcml0eShkYXRhLT5tX3ByaW9yaXR5KTsKIAogICAgIHJlcXVlc3Qt
PnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIHJlcXVlc3QtPm1faHR0cEhlYWRlckZpZWxk
cy5hZG9wdChkYXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSk7CisgICAgcmVxdWVzdC0+bV9o
dHRwSGVhZGVyRmllbGRzLmFkb3B0KHN0ZDo6bW92ZShkYXRhLT5tX2h0dHBIZWFkZXJzKSk7CiAK
ICAgICBzaXplX3QgZW5jb2RpbmdDb3VudCA9IGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgIGlmIChlbmNvZGluZ0NvdW50
ID4gMCkgewpAQCAtNzUsMTMgKzc1LDEzIEBAIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzCiAgICAg
fQogICAgIHJlcXVlc3QtPnNldEhUVFBCb2R5KGRhdGEtPm1faHR0cEJvZHkpOwogICAgIHJlcXVl
c3QtPnNldEFsbG93Q29va2llcyhkYXRhLT5tX2FsbG93Q29va2llcyk7Ci0gICAgcmVxdWVzdC0+
ZG9QbGF0Zm9ybUFkb3B0KGRhdGEpOwotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAg
ICByZXF1ZXN0LT5kb1BsYXRmb3JtQWRvcHQoc3RkOjptb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4g
c3RkOjptb3ZlKHJlcXVlc3QpOwogfQogCi1QYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEoKSBjb25zdAorc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6Y29weURhdGEoKSBjb25zdAogewotICAgIE93blB0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+IGRhdGEgPSBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4oKTsKICAgICBkYXRhLT5tX3VybCA9IHVybCgpLmNvcHkoKTsKICAgICBkYXRhLT5tX2Nh
Y2hlUG9saWN5ID0gY2FjaGVQb2xpY3koKTsKICAgICBkYXRhLT5tX3RpbWVvdXRJbnRlcnZhbCA9
IHRpbWVvdXRJbnRlcnZhbCgpOwpAQCAtOTgsNyArOTgsNyBAQCBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEoKSBj
b25zdAogICAgIGlmIChtX2h0dHBCb2R5KQogICAgICAgICBkYXRhLT5tX2h0dHBCb2R5ID0gbV9o
dHRwQm9keS0+ZGVlcENvcHkoKTsKICAgICBkYXRhLT5tX2FsbG93Q29va2llcyA9IG1fYWxsb3dD
b29raWVzOwotICAgIHJldHVybiBhc1Jlc291cmNlUmVxdWVzdCgpLmRvUGxhdGZvcm1Db3B5RGF0
YShkYXRhLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGFzUmVzb3VyY2VSZXF1ZXN0KCkuZG9QbGF0
Zm9ybUNvcHlEYXRhKHN0ZDo6bW92ZShkYXRhKSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6aXNFbXB0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IGVhNjZkNjEyNmU3ZDhiMzNkMTk2
YzgzMThiM2QwMzc0Y2JmZTdjZmMuLjMzMmRkZDU4ZDY2ODAxZGYwYjFjMDVhZWFjODlmNmMxYzA3
ZDg3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKIAotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgZW51bSBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSB7CkBAIC01NiwxMCArNTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKKyAg
ICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IGFkb3B0KHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKIAogICAgICAgICAv
LyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVy
IHRocmVhZC4KLSAgICAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBp
c051bGwoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CkBAIC0yMzMsNyAr
MjMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBVUkwgbV9maXJzdFBhcnR5Rm9y
Q29va2llczsKIAogICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOwotICAgICAgICBPd25QdHI8
Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gbV9odHRwSGVhZGVyczsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXk7CiAgICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsK
ICAgICAgICAgYm9vbCBtX2FsbG93Q29va2llczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggNWMwNTdl
YmI0NGUxZDQ3ZDE0OTg4NzllNDFkOWIwNWVhYzMyZGU0YS4uZWUxZjM0ZTNiZDk0ZWIwMDhmNTY1
YWVmNDc3MDdhMmI5NDI3MThlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTkyLDkgKzkyLDkgQEAg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXAKIHsKIH0KIAotUGFzc093blB0cjxSZXNvdXJjZVJlc3Bv
bnNlPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKQorc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVzcG9u
c2U+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkKIHsKLSAgICBPd25QdHI8UmVzb3VyY2VSZXNw
b25zZT4gcmVzcG9uc2UgPSBhZG9wdFB0cihuZXcgUmVzb3VyY2VSZXNwb25zZSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZVJlc3BvbnNlPigpOwogICAgIHJlc3BvbnNlLT5zZXRVUkwoZGF0YS0+bV91cmwp
OwogICAgIHJlc3BvbnNlLT5zZXRNaW1lVHlwZShkYXRhLT5tX21pbWVUeXBlKTsKICAgICByZXNw
b25zZS0+c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGRhdGEtPm1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKTsKQEAgLTEwNSwxNSArMTA1LDE1IEBAIFBhc3NPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4g
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSCiAgICAg
cmVzcG9uc2UtPnNldEhUVFBTdGF0dXNUZXh0KGRhdGEtPm1faHR0cFN0YXR1c1RleHQpOwogCiAg
ICAgcmVzcG9uc2UtPmxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKLSAgICByZXNw
b25zZS0+bV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFz
ZSgpKTsKKyAgICByZXNwb25zZS0+bV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KHN0ZDo6bW92ZShk
YXRhLT5tX2h0dHBIZWFkZXJzKSk7CiAgICAgcmVzcG9uc2UtPnNldFJlc291cmNlTG9hZFRpbWlu
ZyhkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZy5yZWxlYXNlKCkpOwotICAgIHJlc3BvbnNlLT5k
b1BsYXRmb3JtQWRvcHQoZGF0YSk7Ci0gICAgcmV0dXJuIHJlc3BvbnNlLnJlbGVhc2UoKTsKKyAg
ICByZXNwb25zZS0+ZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6bW92ZShkYXRhKSk7CisgICAgcmV0dXJu
IHN0ZDo6bW92ZShyZXNwb25zZSk7CiB9CiAKLVBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKCkgY29uc3QKK3N0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29weURhdGEoKSBjb25zdAogewotICAgIE93blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhPiBkYXRhID0gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGEpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVzcG9uc2VEYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFJlc291cmNl
UmVzcG9uc2VEYXRhPigpOwogICAgIGRhdGEtPm1fdXJsID0gdXJsKCkuY29weSgpOwogICAgIGRh
dGEtPm1fbWltZVR5cGUgPSBtaW1lVHlwZSgpLmlzb2xhdGVkQ29weSgpOwogICAgIGRhdGEtPm1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0xMjQs
NyArMTI0LDcgQEAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29weURhdGEoKSBjb24KICAgICBkYXRhLT5tX2h0dHBIZWFk
ZXJzID0gaHR0cEhlYWRlckZpZWxkcygpLmNvcHlEYXRhKCk7CiAgICAgaWYgKG1fcmVzb3VyY2VM
b2FkVGltaW5nKQogICAgICAgICBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZyA9IG1fcmVzb3Vy
Y2VMb2FkVGltaW5nLT5kZWVwQ29weSgpOwotICAgIHJldHVybiBhc1Jlc291cmNlUmVzcG9uc2Uo
KS5kb1BsYXRmb3JtQ29weURhdGEoZGF0YS5yZWxlYXNlKCkpOworICAgIHJldHVybiBhc1Jlc291
cmNlUmVzcG9uc2UoKS5kb1BsYXRmb3JtQ29weURhdGEoc3RkOjptb3ZlKGRhdGEpKTsKIH0KIAog
Ym9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRl
eCA5ZDgzOGFjYzQ5NzAzNzEwYWY3YzdjZGRhZGYyZjM2ZTNkOTkwZjliLi5hMGNiNWY2ZDVmY2Mx
NTJmYmQ4ZGQyMTg2MjdjMWFkYzk1ZjQ2OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAK
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
I2lmIE9TKFNPTEFSSVMpCkBAIC00NywxMCArNDYsMTAgQEAgc3RydWN0IENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UmVz
b3VyY2VSZXNwb25zZT4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhPik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiBh
ZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pOwog
CiAgICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8g
YW5vdGhlciB0aHJlYWQuCi0gICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhPiBjb3B5RGF0YSgpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVzcG9uc2VEYXRhPiBjb3B5RGF0YSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQogICAgIGJvb2wgaXNIVFRQKCkgY29uc3Q7
CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVu
YW1lOwogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogICAgIFN0cmluZyBtX2h0dHBTdGF0dXNU
ZXh0OwotICAgIE93blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFk
ZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBt
X2h0dHBIZWFkZXJzOwogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VM
b2FkVGltaW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggMmEyNmQ1YWFmYTExM2VjMjRlZjNiNjkxNjJi
MmIyOTdkYjA4NTE4ZS4uNDBiMGE5MjJiYWFlNTFjMzAzNjQ3MjdjMjM4ZjczYWUwODM0MTY0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdC5oCkBAIC0xNDMsOCArMTQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpOwogICAgICAgICB2b2lkIGRvVXBkYXRl
UmVzb3VyY2VIVFRQQm9keSgpOwogCi0gICAgICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+KSBjb25zdDsKLSAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRv
cHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9y
bUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+
KSBjb25zdDsKKyAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwogCiAjaWYgVVNFKENGTkVUV09SSykKICAg
ICAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwCmluZGV4IGE4MWE5NWY0NzI4MzA2M2JkNDNlYmRhYmM2NmI2MGU5ZDY2MjgxZmEu
LjNhZmNkMjVkYzM5NzcwMmM3ZTA0YzY2ZDM4ZTczMjM4MWNiMTNiMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwCkBAIC0zNzUsMTUgKzM3NSwxNSBAQCBTdHJpbmcgUmVzb3VyY2VSZXF1ZXN0Ojpw
YXJ0aXRpb25OYW1lKGNvbnN0IFN0cmluZyYgZG9tYWluKQogfQogI2VuZGlmCiAKLVBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3Q6OmRvUGxh
dGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4g
ZGF0YSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+IFJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KENBQ0hFX1BBUlRJVElPTklORykKICAgICBkYXRhLT5tX2NhY2hlUGFydGl0aW9uID0gbV9jYWNo
ZVBhcnRpdGlvbjsKICNlbmRpZgotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBzdGQ6Om1v
dmUoZGF0YSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQoUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpCit2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IGRhdGEpCiB7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKICAgICBtX2NhY2hlUGFydGl0aW9uID0gZGF0YS0+bV9jYWNoZVBhcnRpdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNl
LmgKaW5kZXggYmY3ZDMyOGQ3NWE4NmQyZDUyNDkxNDQ2Mzg2NTU2MGY2ZWEzZTc2Ni4uYjk3YzE5
YzY3ZWM4YzFhOGRiMGQwZGE1MGI2OTE3YzY2MTEzOWVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTEwMyw4
ICsxMDMsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTsKIAogICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpOwotICAgIFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyBy
ZXR1cm4gZGF0YTsgfQotICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bW92ZShkYXRhKTsgfQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIHZvaWQgaW5pdE5TVVJMUmVzcG9uc2UoKSBjb25zdDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVx
dWVzdC5oCmluZGV4IGE3NWE3MWFmODA4MjkyNzJkMjZiOWU4ZTY5ZDMzY2NhMWI5MDE0MDIuLjM4
ZWFmMjA4NzIzZDllOGVmMGExZmU3MjkyZmI2NjQwZTBlYmVmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgKQEAg
LTc4LDggKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvVXBkYXRl
UGxhdGZvcm1IVFRQQm9keSgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQ
Qm9keSgpIHsgfQogCi0gICAgICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICAgICAgdm9pZCBk
b1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+
KSB7IH0KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bW92ZShkYXRhKTsgfQor
ICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CiAgCiAgICAgICAgIHN0YXRpYyBib29sIHNfaHR0cFBp
cGVsaW5pbmdFbmFibGVkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBhZTA5YjgxNGZiMDEx
NWExNjg5Y2QyN2VhOWM1OGFmZjhlZTcwZjAxLi44OThmZTQxMWY5ZTBmMzljYjljOGU1ODQxNDIz
MDVhY2ZjZmVlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAgICBQ
YXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5
RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNv
bnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25z
dCB7IHJldHVybiBzdGQ6Om1vdmUoZGF0YSk7IH0KKyAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQogCiAg
ICAgYm9vbCBtX3Jlc3BvbnNlRmlyZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IGNmMjI2YzE5MGM1
MzkyODFhN2RkZGJiYmIzM2MzZjZiZWQ3M2EwNGYuLjlmMDdiZTU5YjBiZGI1YmIxYWVhMmY2NGE4
MmFkZmIzYmYyYjJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTk5LDggKzk5LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsgfQog
ICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpIHsgfQogCi0gICAgICAgIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURh
dGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0
IHsgcmV0dXJuIGRhdGE7IH0KLSAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRh
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bW92ZShkYXRhKTsgfQorICAgICAgICB2b2lkIGRvUGxhdGZvcm1B
ZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9
CiAgICAgfTsKIAogICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEgOiBw
dWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaApp
bmRleCA0ODkxZjkzNWZjYmM3Zjc3MjNhNjYxNTdlZTJlZDkzM2NmNTNlMGY3Li4xYTgxYjdhNjc0
YjAxMzQ2ZTIwZmRiN2M4OWRlODEwMzNmNjM5NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTg1LDgg
Kzg1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkg
eyB9CiAKLSAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRv
UGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURh
dGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lkIGRvUGxhdGZvcm1BZG9w
dChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9y
bUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRh
PiBkYXRhKSBjb25zdCB7IHJldHVybiBzdGQ6Om1vdmUoZGF0YSk7IH0KKyAgICB2b2lkIGRvUGxh
dGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4pIHsgfQogfTsKIAogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBw
dWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaAppbmRl
eCBkMWViN2Q1NGMwNzI2OGI5ODJkMjllMTFiMTFmNjZlNzg5NzMzODY3Li5mMzAwNmM2YTg0OGQy
OGQwMmNiYzA4YjQ4M2IzZjg2NDE3YzU5ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNjEsOCArNjEsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CiAgICAg
dm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAotICAgIFBhc3NPd25QdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRh
dGE7IH0KLSAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBzdGQ6Om1v
dmUoZGF0YSk7IH0KKyAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CiB9OwogCiBzdHJ1Y3QgQ3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YUJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IGJlYzBlMDQzY2E2M2NkMzdlZGNjNTJiNjVhYzQw
YThhYzY2MjgxYjUuLmRlZTlkOGFlNWFlNmZlM2E4YTIwNjE3NTE4NzMzNjE2NTJjM2VjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJj
ZVJlc3BvbnNlLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAgICBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7
IH0KLSAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+KSB7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBzdGQ6Om1v
dmUoZGF0YSk7IH0KKyAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQogfTsKIAogc3RydWN0IENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YUJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCBhNjRhNGM5MGM3OGRjOWYxY2E4N2E3
ZTNiM2E2OGE1ZTEzYzUwMDM1Li5mOWRkYmU4NTkzNzUzYzU1MWMyZjdhMzAwYWQ0OTFmMTIzODQx
YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtODAsOCArODAsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
b3JpZ2luLCBjb25zdCBVUkwmIHVybFRvTWF0Y2gpIGNvbnN0OwogCiAgICAgLy8gV29ya2VyTG9h
ZGVyUHJveHkKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKLSAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xv
YWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOworICAg
IHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHN0ZDo6dW5p
cXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJik7CiAK
ICAgICAvLyBXb3JrZXJSZXBvcnRpbmdQcm94eQogICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CkBAIC0xNDAs
NyArMTQwLDcgQEAgYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6bWF0Y2hlcyhjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG8KICAgICByZXR1cm4gbmFtZSA9PSBt
X25hbWU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQordm9pZCBTaGFyZWRX
b3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAgICBNdXRleExvY2tlciBsb2NrKG1fd29ya2Vy
RG9jdW1lbnRzTG9jayk7CiAKQEAgLTE1MywxNSArMTUzLDE1IEBAIHZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrCiAgICAgLy8gSnVzdCBwaWNrIGFuIGFyYml0cmFyeSBhY3RpdmUgZG9jdW1lbnQgZnJv
bSB0aGUgSGFzaFNldCBhbmQgcGFzcyBsb2FkIHJlcXVlc3RzIHRvIGl0LgogICAgIC8vIEZJWE1F
OiBEbyB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBjbG9zZXMg
dGhlIGRvY3VtZW50IG1pZC1sb2FkLCB2aWEgYSBzaGFkb3cgZG9jdW1lbnQgb3Igc29tZSBvdGhl
ciBzb2x1dGlvbj8KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAqKG1fd29ya2VyRG9jdW1lbnRz
LmJlZ2luKCkpOwotICAgIGRvY3VtZW50LT5wb3N0VGFzayh0YXNrKTsKKyAgICBkb2N1bWVudC0+
cG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKIH0KIAotYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK2Jvb2wgU2hhcmVk
V29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3RkOjp1bmlx
dWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYg
bW9kZSkKIHsKICAgICBpZiAoaXNDbG9zaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBBU1NFUlQobV90aHJlYWQpOwotICAgIG1fdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JN
b2RlKHRhc2ssIG1vZGUpOworICAgIG1fdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KHN0ZDo6bW92ZSh0YXNrKSwgbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI1NCwx
NyArMjU0LDEyIEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OmNsb3NlKCkKIAogY2xhc3MgU2hh
cmVkV29ya2VyQ29ubmVjdFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcmVkV29ya2VyQ29ubmVjdFRh
c2s+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2hhcmVkV29ya2VyQ29ubmVjdFRhc2soY2hh
bm5lbCkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKICAgICAgICAgOiBtX2NoYW5u
ZWwoY2hhbm5lbCkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAgIHsK
ICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgq
c2NyaXB0Q29udGV4dCk7CkBAIC0zNjcsNyArMzYyLDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29y
a2VyUmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0TG9hZGVkKFNoYXJlZFdvcmtlclByb3h5JiBwcm94
eSwKICAgICAgICAgcHJveHkuc2V0VGhyZWFkKHRocmVhZCk7CiAgICAgICAgIHRocmVhZC0+c3Rh
cnQoKTsKICAgICB9Ci0gICAgcHJveHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFy
ZWRXb3JrZXJDb25uZWN0VGFzazo6Y3JlYXRlKHBvcnQpKTsKKyAgICBwcm94eS50aHJlYWQoKS0+
cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2hhcmVkV29ya2VyQ29ubmVjdFRh
c2s+KHBvcnQpKTsKIH0KIAogYm9vbCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aGFz
U2hhcmVkV29ya2VycyhEb2N1bWVudCogZG9jdW1lbnQpCkBAIC00MTUsNyArNDEwLDcgQEAgdm9p
ZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdFRvV29ya2VyKFBhc3NSZWZQ
dHI8U2hhcmVkV29ya2VyPiB3b3IKICAgICB9CiAgICAgLy8gSWYgcHJveHkgaXMgYWxyZWFkeSBy
dW5uaW5nLCBqdXN0IGNvbm5lY3QgdG8gaXQgLSBvdGhlcndpc2UsIGtpY2sgb2ZmIGEgbG9hZGVy
IHRvIGxvYWQgdGhlIHNjcmlwdC4KICAgICBpZiAocHJveHktPnRocmVhZCgpKQotICAgICAgICBw
cm94eS0+dGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJDb25uZWN0VGFz
azo6Y3JlYXRlKHBvcnQpKTsKKyAgICAgICAgcHJveHktPnRocmVhZCgpLT5ydW5Mb29wKCkucG9z
dFRhc2soc3RkOjptYWtlX3VuaXF1ZTxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4ocG9ydCkpOwog
ICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPiBsb2Fk
ZXIgPSBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKHdvcmtlciwgcG9ydCwg
cHJveHkucmVsZWFzZSgpKSk7CiAgICAgICAgIGxvYWRlci0+bG9hZCh1cmwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKaW5kZXggZmQzYjg2NWJlYWNlNzE1
ZDIzMjhmMjExOTFmNGQxYjQ2NDAzZTYyOC4uMzE3ODZmYjRmYWU3ZGRiZmViMzYzMjY0MDA5Zjkw
MzAxMzZlNmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUu
Y3BwCkBAIC00OCwxMSArNDgsNiBAQCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1
ZSgpCiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2sgZmluYWwg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8RXZlbnREaXNwYXRjaGVyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50LCBXb3JrZXJFdmVudFF1ZXVlJiBldmVudFF1ZXVlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERpc3BhdGNoZXJUYXNrKGV2ZW50LCBldmVudFF1ZXVl
KSk7Ci0gICAgfQotCiAgICAgdmlydHVhbCB+RXZlbnREaXNwYXRjaGVyVGFzaygpCiAgICAgewog
ICAgICAgICBpZiAobV9ldmVudCkKQEAgLTc5LDcgKzc0LDYgQEAgcHVibGljOgogICAgICAgICBt
X2V2ZW50LmNsZWFyKCk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIEV2ZW50RGlzcGF0Y2hlclRh
c2soUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUp
CiAgICAgICAgIDogbV9ldmVudChldmVudCkKICAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRR
dWV1ZSkKQEAgLTg3LDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCitwcml2YXRl
OgogICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKICAgICBXb3JrZXJFdmVudFF1ZXVlJiBtX2V2
ZW50UXVldWU7CiAgICAgYm9vbCBtX2lzQ2FuY2VsbGVkOwpAQCAtOTcsOSArOTIsOSBAQCBib29s
IFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVu
dCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBwcnBFdmVudDsKLSAgICBPd25QdHI8RXZlbnREaXNwYXRjaGVyVGFz
az4gdGFzayA9IEV2ZW50RGlzcGF0Y2hlclRhc2s6OmNyZWF0ZShldmVudCwgKnRoaXMpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxFdmVudERpc3BhdGNoZXJUYXNrPiB0YXNrID0gc3RkOjptYWtlX3Vu
aXF1ZTxFdmVudERpc3BhdGNoZXJUYXNrPihldmVudCwgKnRoaXMpOwogICAgIG1fZXZlbnRUYXNr
TWFwLmFkZChldmVudC5yZWxlYXNlKCksIHRhc2suZ2V0KCkpOwotICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5wb3N0VGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXgg
Mjg4OTIzNmY3MmZmOTQzMTllM2ZjOGExMGUxMjk4OWNlMjVmMGMwYS4uNTAyYTllYmJkMmY0MWIx
ZTM3Zjk3ZGNhMjM2ZGZhNDM3ZTRhY2IyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTY1LDExICs2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q2xv
c2VXb3JrZXJHbG9iYWxTY29wZVRhc2s+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrKTsKLSAgICB9Ci0KICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAqY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQt
PmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC0xNTAsNyArMTQ1LDcgQEAgdm9pZCBXb3JrZXJH
bG9iYWxTY29wZTo6Y2xvc2UoKQogICAgIC8vIEFmdGVyIG1fY2xvc2luZyBpcyBzZXQsIGFsbCB0
aGUgdGFza3MgaW4gdGhlIHF1ZXVlIGNvbnRpbnVlIHRvIGJlIGZldGNoZWQgYnV0IG9ubHkKICAg
ICAvLyB0YXNrcyB3aXRoIGlzQ2xlYW51cFRhc2soKT09dHJ1ZSB3aWxsIGJlIGV4ZWN1dGVkLgog
ICAgIG1fY2xvc2luZyA9IHRydWU7Ci0gICAgcG9zdFRhc2soQ2xvc2VXb3JrZXJHbG9iYWxTY29w
ZVRhc2s6OmNyZWF0ZSgpKTsKKyAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPENsb3NlV29y
a2VyR2xvYmFsU2NvcGVUYXNrPigpKTsKIH0KIAogV29ya2VyTmF2aWdhdG9yKiBXb3JrZXJHbG9i
YWxTY29wZTo6bmF2aWdhdG9yKCkgY29uc3QKQEAgLTE3Nyw5ICsxNzIsOSBAQCBib29sIFdvcmtl
ckdsb2JhbFNjb3BlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2soUGFzc093blB0cjxUYXNr
PiB0YXNrKQordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2soc3RkOjp1bmlxdWVfcHRy
PFRhc2s+IHRhc2spCiB7Ci0gICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsK
KyAgICB0aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAK
IGludCBXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dChQYXNzT3duUHRyPFNjaGVkdWxlZEFj
dGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCkKQEAgLTI1Miw3ICsyNDcsNyBAQCB2b2lkIFdvcmtl
ckdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGNvbnN0CiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0Nv
bnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6
OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8QWRkQ29uc29sZU1lc3NhZ2VUYXNrPihzb3VyY2UsIGxldmVsLCBtZXNzYWdl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2Myw3ICsyNTgsNyBAQCB2b2lkIFdv
cmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZUxldmVsIGxldgogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25l
ZCBjb2x1bW5OdW1iZXIsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsK
ICAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzazo6Y3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAg
cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxBZGRDb25zb2xlTWVzc2FnZVRhc2s+KHNvdXJjZSwg
bGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDU5NzEyMmNjZjdhNDljZjAxMTYy
ZDRkM2ZhN2ZhZjc1NmMxZGIyZWYuLjVhNzA3MTBiZWZhZDkzMjQ3MjcwNTllZWM4MWUyZWQ1NGUx
ZGI4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAg
LTc4LDcgKzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBh
c3NPd25QdHI8VGFzaz4pIG92ZXJyaWRlOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0
J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2so
c3RkOjp1bmlxdWVfcHRyPFRhc2s+KSBvdmVycmlkZTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24g
Y29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgICAgICAvLyBXb3JrZXJHbG9i
YWxTY29wZQogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogc2VsZigpIHsgcmV0dXJuIHRoaXM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAppbmRleCA2Mjkz
MTI0OGQ3MTg3OWQ1M2Y0MmUwYTI2YTVjMzcyYjEwZTA5OTlmLi5mNGVmOGY5Y2YzNWI2MDUzMjU5
YmI2OWQ4OTNjOTVjNTM1N2E1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckxvYWRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJM
b2FkZXJQcm94eS5oCkBAIC00NywxMiArNDcsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIH5Xb3JrZXJMb2FkZXJQcm94eSgpIHsgfQogCiAgICAgICAgIC8vIFBvc3Rz
IGEgdGFzayB0byB0aGUgdGhyZWFkIHdoaWNoIHJ1bnMgdGhlIGxvYWRpbmcgY29kZSAobm9ybWFs
bHksIHRoZSBtYWluIHRocmVhZCkuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9h
ZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSA9IDA7CiAKICAgICAgICAgLy8gUG9zdHMgY2FsbGJhY2tz
IGZyb20gbG9hZGluZyBjb2RlIHRvIHRoZSBXb3JrZXJHbG9iYWxTY29wZS4gVGhlICdtb2RlJyBp
cyB1c2VkIHRvIGRpZmZlcmVudGlhdGUKICAgICAgICAgLy8gc3BlY2lmaWMgc3luY2hyb25vdXMg
bG9hZGluZyByZXF1ZXN0cyBzbyB0aGV5IGNhbiBiZSAnbmVzdGVkJywgcGVyIHNwZWMuCiAgICAg
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGFzayB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4K
LSAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBt
b2RlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwg
Y29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApp
bmRleCBkNTA0YWQyNWU2NmVmNDFiZjJjYTk5MmFmMjY4OTRjN2VlYWQ2NzI5Li41NzMzNzViYzNi
ZTUyZjA0ZTYyNjIwNjA1NGNlYWFlYmQ1YWMxYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNTQsMTggKzU0LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrPiBjcmVhdGUoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzKSk7Ci0gICAg
fQotCi1wcml2YXRlOgogICAgIE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2soUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzKQogICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQogICAg
ICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
Q29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KHNjcmlwdENvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC04MiwxMiArNzcsNiBA
QCBwcml2YXRlOgogCiBjbGFzcyBNZXNzYWdlV29ya2VyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNZXNz
YWdlV29ya2VyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyVGFzayhtZXNzYWdlLCBjaGFubmVscywgbWVzc2Fn
aW5nUHJveHkpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgTWVzc2FnZVdvcmtlclRhc2soUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2Fn
aW5nUHJveHkpCiAgICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgICwgbV9jaGFu
bmVscyhjaGFubmVscykKQEAgLTk1LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Citwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAgIHsKICAgICAgICAgV29ya2VyKiB3b3JrZXJPYmpl
Y3QgPSBtX21lc3NhZ2luZ1Byb3h5LT53b3JrZXJPYmplY3QoKTsKQEAgLTExMywxMiArMTAzLDYg
QEAgcHJpdmF0ZToKIAogY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzayA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxX
b3JrZXJFeGNlcHRpb25UYXNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJFeGNlcHRpb25UYXNrKGVycm9yTWVzc2FnZSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIG1lc3NhZ2luZ1Byb3h5KSk7Ci0gICAgfQot
Ci1wcml2YXRlOgogICAgIFdvcmtlckV4Y2VwdGlvblRhc2soY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICA6
IG1fZXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSkKICAgICAgICAgLCBt
X2xpbmVOdW1iZXIobGluZU51bWJlcikKQEAgLTEyOCw2ICsxMTIsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewogICAgICAgICBXb3JrZXIqIHdvcmtl
ck9iamVjdCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgpOwpAQCAtMTUxLDE3ICsx
MzYsMTIgQEAgcHJpdmF0ZToKIAogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRUYXNr
IDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzaz4gY3JlYXRlKFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRUYXNrKG1lc3NhZ2luZ1By
b3h5KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVk
VGFzayhXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAgICAgICAgIDogbV9t
ZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKICAg
ICB7CiAgICAgICAgIG1fbWVzc2FnaW5nUHJveHktPndvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVk
SW50ZXJuYWwoKTsKQEAgLTE3MiwxNyArMTUyLDEyIEBAIHByaXZhdGU6CiAKIGNsYXNzIFdvcmtl
clRlcm1pbmF0ZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGVybWluYXRlVGFzaz4gY3JlYXRl
KFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGVybWluYXRlVGFzayhtZXNzYWdpbmdQcm94eSkpOwot
ICAgIH0KLQotcHJpdmF0ZToKICAgICBXb3JrZXJUZXJtaW5hdGVUYXNrKFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICAgICAgOiBtX21lc3NhZ2luZ1Byb3h5KG1lc3Nh
Z2luZ1Byb3h5KQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKICAgICAgICAgbV9tZXNz
YWdpbmdQcm94eS0+dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKQEAgLTE5MywxMiArMTY4
LDYgQEAgcHJpdmF0ZToKIAogY2xhc3MgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzaz4gY3JlYXRlKFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgYm9vbCBjb25maXJtaW5nTWVzc2FnZSwg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzayhtZXNzYWdpbmdQcm94eSwgY29uZmly
bWluZ01lc3NhZ2UsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAg
ICBXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2soV29ya2VyTWVzc2FnaW5nUHJveHkqIG1l
c3NhZ2luZ1Byb3h5LCBib29sIGNvbmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSkKICAgICAgICAgOiBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQogICAgICAg
ICAsIG1fY29uZmlybWluZ01lc3NhZ2UoY29uZmlybWluZ01lc3NhZ2UpCkBAIC0yMDYsNiArMTc1
LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKICAgICB7CiAgICAgICAgIG1f
bWVzc2FnaW5nUHJveHktPnJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKG1fY29uZmlybWlu
Z01lc3NhZ2UsIG1faGFzUGVuZGluZ0FjdGl2aXR5KTsKQEAgLTIxOCwxOCArMTg4LDEzIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzayA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s+IGNyZWF0ZShXb3JrZXJNZXNzYWdp
bmdQcm94eSogbWVzc2FnaW5nUHJveHksIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNr
KG1lc3NhZ2luZ1Byb3h5LCBtZXNzYWdlKSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIFBvc3RN
ZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzayhXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5n
UHJveHksIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgOiBtX21lc3NhZ2luZ1Byb3h5
KG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQpAQCAtMjQ0LDE3ICsyMDksMTIgQEAgcHJpdmF0ZToKIAogY2xhc3MgTm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNr
PiBjcmVhdGUoYm9vbCBpc09uTGluZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzayhpc09uTGluZSkpOwotICAgIH0KLQotcHJp
dmF0ZToKICAgICBOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNrKGJvb2wgaXNPbkxpbmUpCiAg
ICAgICAgIDogbV9pc09uTGluZShpc09uTGluZSkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250
ZXh0KQogICAgIHsKICAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IG1faXNPbkxpbmUg
PyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50OwpA
QCAtMzEwLDcgKzI3MCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0CiAKIHZvaWQgV29ya2Vy
TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscywgdGhpcykpOwor
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxN
ZXNzYWdlV29ya2VyVGFzaz4obWVzc2FnZSwgY2hhbm5lbHMsIHRoaXMpKTsKIH0KIAogdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKQEAgLTMyMCwzMSArMjgwLDMxIEBAIHZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTCiAKICAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAgKytt
X3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s6OmNyZWF0ZShtZXNzYWdl
LCBjaGFubmVscykpOworICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
KHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzaz4obWVzc2FnZSwg
Y2hhbm5lbHMpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVu
ZChNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMp
KTsKKyAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE1l
c3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s+KG1lc3NhZ2UsIGNoYW5uZWxzKSk7CiB9CiAKLWJv
b2wgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBT
dHJpbmcmIG1vZGUpCitib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKG1fYXNrZWRUb1Rl
cm1pbmF0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKG1fd29ya2VyVGhy
ZWFkKTsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZSh0YXNr
LCBtb2RlKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShz
dGQ6Om1vdmUodGFzayksIG1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RU
YXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2spCiB7CiAgICAgLy8gRklYTUU6IEluIGNhc2Ugb2YgbmVzdGVkIHdvcmtlcnMsIHRoaXMg
c2hvdWxkIGdvIGRpcmVjdGx5IHRvIHRoZSByb290IERvY3VtZW50IGNvbnRleHQuCiAgICAgQVNT
RVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHRhc2spOworICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhX
b3JrZXJFeGNlcHRpb25UYXNrOjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHNvdXJjZVVSTCwgdGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJFeGNlcHRpb25UYXNrPihlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCB0aGlzKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCkBAIC0zNzMsNyArMzMzLDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4K
ICAgICAgICAgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkgPSB0cnVlOyAvLyBXb3Jr
ZXIgaW5pdGlhbGl6YXRpb24gbWVhbnMgYSBwZW5kaW5nIGFjdGl2aXR5LgogCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YXNrQ291bnQ7ICsraSkKLSAgICAgICAgICAgIG1fd29y
a2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2sobV9xdWV1ZWRFYXJseVRhc2tzW2ldLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0
ZDo6bW92ZShtX3F1ZXVlZEVhcmx5VGFza3NbaV0pKTsKICAgICAgICAgbV9xdWV1ZWRFYXJseVRh
c2tzLmNsZWFyKCk7CiAgICAgfQogfQpAQCAtMzkyLDcgKzM1Miw3IEBAIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogICAg
IGlmICghbV93b3JrZXJUaHJlYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzazo6Y3Jl
YXRlKGlzT25saW5lKSk7CisgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhz
dGQ6Om1ha2VfdW5pcXVlPE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRhc2s+KGlzT25saW5lKSk7
CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlck9iamVjdERlc3Ryb3llZElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogcHJv
eHkpCkBAIC00NjMsMTQgKzQyMywxNCBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzZW5k
TWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKQogewotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRU
YXNrOjpjcmVhdGUodGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2s+KHRoaXMp
KTsKICAgICAvLyBXaWxsIGV4ZWN1dGUgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
Ondvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKCkKIHsKICAgICAvLyBFeGVjdXRlcyB0ZXJtaW5hdGVX
b3JrZXJHbG9iYWxTY29wZSgpIG9uIHBhcmVudCBjb250ZXh0J3MgdGhyZWFkLgotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyVGVybWluYXRlVGFzazo6Y3JlYXRl
KHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8V29ya2VyVGVybWluYXRlVGFzaz4odGhpcykpOwogfQogCiB2b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCkKQEAgLTUw
MSwxOSArNDYxLDE5IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnRlcm1pbmF0ZVdvcmtl
ckdsb2JhbFNjb3BlKCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soUG9zdE1lc3NhZ2VU
b1BhZ2VJbnNwZWN0b3JUYXNrOjpjcmVhdGUodGhpcywgbWVzc2FnZSkpOworICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxQb3N0TWVzc2FnZVRv
UGFnZUluc3BlY3RvclRhc2s+KHRoaXMsIG1lc3NhZ2UpKTsKIH0KICNlbmRpZgogCiB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s6OmNyZWF0ZSh0aGlzLCB0cnVlLCBo
YXNQZW5kaW5nQWN0aXZpdHkpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrPih0aGlz
LCB0cnVlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKICAgICAvLyBXaWxsIGV4ZWN1dGUgcmVwb3J0
UGVuZGluZ0FjdGl2aXR5SW50ZXJuYWwoKSBvbiBjb250ZXh0J3MgdGhyZWFkLgogfQogCiB2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhX
b3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s6OmNyZWF0ZSh0aGlzLCBmYWxzZSwgaGFzUGVu
ZGluZ0FjdGl2aXR5KSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzaz4odGhpcywgZmFs
c2UsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSByZXBvcnRQZW5k
aW5nQWN0aXZpdHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCBiZjYwN2Y1ODJj
ZTFiNGQ1NDE0YTY1NDljOTgyMjE3MjVlZDk1ZDI1Li5kNDVhMWFhYzA0N2JkYjFjODRlYTY4MjVm
ZWE3OWZkMWNjZmVmZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJv
eHkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtNzksOCArNzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltcGxlbWVu
dGF0aW9uIG9mIFdvcmtlckxvYWRlclByb3h5LgogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFy
ZSBjYWxsZWQgb24gZGlmZmVyZW50IHRocmVhZHMgdG8gc2NoZWR1bGUgbG9hZGluZwogICAgICAg
ICAvLyByZXF1ZXN0cyBhbmQgdG8gc2VuZCBjYWxsYmFja3MgYmFjayB0byBXb3JrZXJHbG9iYWxT
Y29wZS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKSBvdmVycmlkZTsK
IAogICAgICAgICB2b2lkIHdvcmtlclRocmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQ+KTsKIApAQCAtMTEyLDcgKzExMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZTsKIAotICAgICAgICBWZWN0b3I8T3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiBtX3F1ZXVlZEVhcmx5VGFza3M7IC8v
IFRhc2tzIGFyZSBxdWV1ZWQgaGVyZSB1bnRpbCB0aGVyZSdzIGEgdGhyZWFkIG9iamVjdCBjcmVh
dGVkLgorICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+PiBtX3F1ZXVlZEVhcmx5VGFza3M7IC8vIFRhc2tzIGFyZSBxdWV1ZWQgaGVyZSB1
bnRpbCB0aGVyZSdzIGEgdGhyZWFkIG9iamVjdCBjcmVhdGVkLgogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IqIG1fcGFn
ZUluc3BlY3RvcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHAKaW5kZXggOWE5ZjU1NmY3NDEzZTNmZTI4ZDE5NmQ1ZDFjYTQ1MmMwNTQ3NjA2NS4uNGVlMzAz
ZGU0NTVhNDM5ZDA2ZDA2ODZiZDE5MWM5ODY4NTgwZjE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xOTQsMjQgKzE5NCwxOSBAQCB2b2lkIFdvcmtlclJ1
bkxvb3A6OnRlcm1pbmF0ZSgpCiAgICAgbV9tZXNzYWdlUXVldWUua2lsbCgpOwogfQogCi12b2lk
IFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzaykKK3ZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soc3RkOjp1bmlxdWVf
cHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7Ci0gICAgcG9zdFRhc2tG
b3JNb2RlKHRhc2ssIGRlZmF1bHRNb2RlKCkpOworICAgIHBvc3RUYXNrRm9yTW9kZShzdGQ6Om1v
dmUodGFzayksIGRlZmF1bHRNb2RlKCkpOwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
dGFzaykKK3ZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoc3RkOjp1bmlx
dWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7Ci0gICAgbV9tZXNz
YWdlUXVldWUuYXBwZW5kQW5kS2lsbChUYXNrOjpjcmVhdGUodGFzaywgZGVmYXVsdE1vZGUoKS5p
c29sYXRlZENvcHkoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwoc3RkOjpt
YWtlX3VuaXF1ZTxUYXNrPihzdGQ6Om1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRD
b3B5KCkpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUoUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1v
ZGUpCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShzdGQ6OnVuaXF1ZV9wdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQog
ewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUodGFzaywgbW9kZS5pc29s
YXRlZENvcHkoKSkpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8V29ya2VyUnVuTG9vcDo6VGFzaz4g
V29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQotewotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8VGFzaz4obmV3IFRhc2sodGFzaywgbW9kZSkpOworICAgIG1fbWVzc2FnZVF1
ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KHN0ZDo6bW92ZSh0YXNrKSwgbW9kZS5p
c29sYXRlZENvcHkoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1U
YXNrKGNvbnN0IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCkBAIC0yMjEsOCArMjE2LDggQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpUYXNrOjpw
ZXJmb3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5Mb29wLCBTY3JpcHRFeGVjdXQKICAg
ICAgICAgbV90YXNrLT5wZXJmb3JtVGFzayhjb250ZXh0KTsKIH0KIAotV29ya2VyUnVuTG9vcDo6
VGFzazo6VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKLSAgICA6IG1fdGFzayh0YXNrKQorV29ya2VyUnVuTG9vcDo6
VGFzazo6VGFzayhzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
dGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgIDogbV90YXNrKHN0ZDo6bW92ZSh0YXNrKSkK
ICAgICAsIG1fbW9kZShtb2RlLmlzb2xhdGVkQ29weSgpKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuaAppbmRleCAxMGFhODFiNTQ0MDVhODRhOTBiZjcxNzg4OTg0MDA3
ZGZjMjA4MmM4Li4wNWFhYmZjYTc1NDY3YTA0MTcxZDFmOWZiMDQ0MTU4MWMwYmY1ODMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1
ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsOSArNTcsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgICAgIGJvb2wgdGVybWlu
YXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpOyB9CiAKLSAgICAg
ICAgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KTsKLSAgICAgICAgdm9pZCBwb3N0VGFza0FuZFRlcm1pbmF0ZShQYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKLSAgICAgICAgdm9pZCBwb3N0VGFza0Zvck1vZGUoUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2Rl
KTsKKyAgICAgICAgdm9pZCBwb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4pOworICAgICAgICB2b2lkIHBvc3RUYXNrQW5kVGVybWluYXRlKHN0ZDo6
dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisgICAgICAgIHZvaWQg
cG9zdFRhc2tGb3JNb2RlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGNyZWF0
ZVVuaXF1ZUlkKCkgeyByZXR1cm4gKyttX3VuaXF1ZUlkOyB9CiAKQEAgLTY5LDE1ICs2OCwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIFRhc2sgewogICAgICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRhc2s+IGNy
ZWF0ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJp
bmcmIG1vZGUpOworICAgICAgICAgICAgVGFzayhzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgICAg
IH5UYXNrKCkgeyB9CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX21vZGU7IH0KICAgICAgICAgICAgIHZvaWQgcGVyZm9ybVRhc2soY29uc3QgV29ya2Vy
UnVuTG9vcCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgICAgICBwcml2YXRlOgot
ICAgICAgICAgICAgVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgICAgIAotICAgICAgICAgICAgT3duUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IG1fdGFzazsKKyAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBtX3Rhc2s7CiAgICAgICAg
ICAgICBTdHJpbmcgbV9tb2RlOwogICAgICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5jcHAKaW5kZXggZmNhNjA2ZWMyMzNmZjM0MTk2ZGU5ZGMwZDQxNWIzOWE4MmFk
MDI0Yi4uZDQ5OTc0MmRkOTZkM2M5NjVmNTkwNTE3NjQ4ODhhYjg5YmVhNjc4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtNzksMTAgKzc5LDcgQEAgdW5zaWdu
ZWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpCiBzdHJ1Y3QgV29ya2VyVGhyZWFk
U3RhcnR1cERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlclRocmVhZFN0YXJ0
dXBEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+IGNyZWF0ZShjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRp
bmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdz
LCBzb3VyY2VDb2RlLCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSwgdG9wT3JpZ2luKSk7Ci0gICAgfQorICAgIFdvcmtlclRocmVhZFN0
YXJ0dXBEYXRhKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCiAgICAgVVJMIG1fc2NyaXB0VVJMOwog
ICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKQEAgLTkyLDggKzg5LDYgQEAgcHVibGljOgogICAgIFN0
cmluZyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgbV9jb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlOwogICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci1wcml2YXRlOgotICAgIFdvcmtlclRocmVhZFN0YXJ0
dXBEYXRhKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29u
c3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogfTsKIAogV29ya2VyVGhyZWFkU3RhcnR1cERh
dGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0
cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiog
dG9wT3JpZ2luKQpAQCAtMTE4LDcgKzExMyw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFk
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QKICAg
ICA6IG1fdGhyZWFkSUQoMCkKICAgICAsIG1fd29ya2VyTG9hZGVyUHJveHkod29ya2VyTG9hZGVy
UHJveHkpCiAgICAgLCBtX3dvcmtlclJlcG9ydGluZ1Byb3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5
KQotICAgICwgbV9zdGFydHVwRGF0YShXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6Y3JlYXRlKHNj
cmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250
ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbikp
CisgICAgLCBtX3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1
cERhdGE+KHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgc3RhcnRN
b2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIHRv
cE9yaWdpbikpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKICAgICAsIG1fbm90aWZpY2F0aW9uQ2xpZW50KDApCiAjZW5kaWYKQEAgLTE4
MCw3ICsxNzUsNyBAQCB2b2lkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKICAgICAvLyBG
cmVlIHRoZSBzdGFydHVwIGRhdGEgdG8gY2F1c2UgaXRzIG1lbWJlciB2YXJpYWJsZSBkZXJlZidz
IGhhcHBlbiBvbiB0aGUgd29ya2VyJ3MgdGhyZWFkIChzaW5jZQogICAgIC8vIGFsbCByZWYvZGVy
ZWZzIG9mIHRoZXNlIG9iamVjdHMgYXJlIGhhcHBlbmluZyBvbiB0aGUgdGhyZWFkIGF0IHRoaXMg
cG9pbnQpLiBOb3RlIHRoYXQKICAgICAvLyBXb3JrZXJUaHJlYWQ6On5Xb3JrZXJUaHJlYWQgaGFw
cGVucyBvbiBhIGRpZmZlcmVudCB0aHJlYWQgd2hlcmUgaXQgd2FzIGNyZWF0ZWQuCi0gICAgbV9z
dGFydHVwRGF0YS5jbGVhcigpOworICAgIG1fc3RhcnR1cERhdGEgPSBudWxscHRyOwogCiAgICAg
cnVuRXZlbnRMb29wKCk7CiAKQEAgLTIwNywxMSArMjAyLDYgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6
OnJ1bkV2ZW50TG9vcCgpCiAKIGNsYXNzIFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzayA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2s+IGNyZWF0ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlclRocmVhZFNodXRkb3duRmlu
aXNoVGFzaygpKTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCAqY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC0y
MjUsMTEgKzIxNSw2IEBAIHB1YmxpYzoKIAogY2xhc3MgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFy
dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s+IGNyZWF0
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlclRocmVhZFNodXRk
b3duU3RhcnRUYXNrKCkpOwotICAgIH0KLQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
QEAgLTI1Nyw3ICsyNDIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gU3RpY2sgYSBzaHV0ZG93
biBjb21tYW5kIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLCBzbyB0aGF0IHdlIGRlYWwKICAgICAg
ICAgLy8gd2l0aCBhbGwgdGhlIGNsZWFudXAgdGFza3MgdGhlIGRhdGFiYXNlcyBwb3N0IGZpcnN0
LgotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soV29ya2VyVGhyZWFkU2h1dGRv
d25GaW5pc2hUYXNrOjpjcmVhdGUoKSk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0
VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzaz4oKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CkBAIC0yNzUsNyArMjYwLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQobV93b3JrZXJHbG9iYWxTY29wZS5n
ZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKFdv
cmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpjcmVhdGUoKSk7CisgICAgICAgIG1fcnVuTG9v
cC5wb3N0VGFza0FuZFRlcm1pbmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVhZFNodXRk
b3duU3RhcnRUYXNrPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3J1bkxvb3Au
dGVybWluYXRlKCk7CkBAIC0yOTAsNyArMjc1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnJlbGVh
c2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpCiAgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2sodGhyZWFkU2V0TXV0ZXgoKSk7CiAKICAgICBmb3IgKGF1dG8qIHdv
cmtlclRocmVhZCA6IHdvcmtlclRocmVhZHMoKSkKLSAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soYWRvcHRQdHIobmV3IFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRh
c2spKTsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtl
X3VuaXF1ZTxSZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlUYXNrPigpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXgg
OTZkOWIwN2NkMzg0NmM5MWUxMjZjODZmYzRkZjYxYmFkMjQ4NWJiMC4uYTA5ZmI4MDRlYTc4MDY0
NTEwNWJjNmZmYzkxMTg5YWMwMWU2MzI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiR3JvdXBTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTkyLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7
CiAgICAgICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKIAotICAgICAgICBPd25QdHI8
V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+IG1fc3RhcnR1cERhdGE7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gbV9zdGFydHVwRGF0YTsKIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAg
ICAgIE5vdGlmaWNhdGlvbkNsaWVudCogbV9ub3RpZmljYXRpb25DbGllbnQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>