<?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>136370</bug_id>
          
          <creation_ts>2014-08-29 07:28:03 -0700</creation_ts>
          <short_desc>Remove NetworkResourceLoaderClient and subclasses.</short_desc>
          <delta_ts>2014-08-29 11:15:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032158</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-08-29 07:28:03 -0700</bug_when>
    <thetext>This code is needlessly abstract. It can be replaced with a few ifs in NetworkResourceLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032159</commentid>
    <comment_count>1</comment_count>
      <attachid>237349</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-08-29 07:31:20 -0700</bug_when>
    <thetext>Created attachment 237349
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032160</commentid>
    <comment_count>2</comment_count>
      <attachid>237350</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-08-29 07:42:33 -0700</bug_when>
    <thetext>Created attachment 237350
fix cmake build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032170</commentid>
    <comment_count>3</comment_count>
      <attachid>237350</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-29 09:37:45 -0700</bug_when>
    <thetext>Comment on attachment 237350
fix cmake build

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

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:388
&gt; +#endif // __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090

I don’t think this comment is helpful. It’s gotten out of sync with the #if, which is one of the main reasons I don’t like comments like this, and it’s only a few lines away from the #if.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.h:174
&gt; +    struct SynchronousLoadData {
&gt; +        SynchronousLoadData(WebCore::ResourceRequest&amp; request, PassRefPtr&lt;Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&gt; reply)
&gt; +            : m_originalRequest(request)
&gt; +            , m_delayedReply(reply)
&gt; +        {
&gt; +            ASSERT(m_delayedReply);
&gt; +        }
&gt; +        WebCore::ResourceRequest m_originalRequest;
&gt; +        WebCore::ResourceRequest m_currentRequest;
&gt; +        RefPtr&lt;Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&gt; m_delayedReply;
&gt; +        WebCore::ResourceResponse m_response;
&gt; +        WebCore::ResourceError m_error;
&gt; +    };

I don’t think we need to put the definition of this struct in the header. We can compile references to this struct and unique_ptr to this struct without having the entire class in the header. And it would be nice to not have to include ResourceError.h and ResourceResponse.h here. Can we forward-declare the struct here and put the definition in the .cpp file? I believe this can be done even for a nested struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032174</commentid>
    <comment_count>4</comment_count>
      <attachid>237350</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-08-29 09:44:16 -0700</bug_when>
    <thetext>Comment on attachment 237350
fix cmake build

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

Makes sense to me as well, the abstraction did cause some confusion in the past.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:264
&gt; +    if (isSynchronous()) {

It&apos;s slightly annoying that the unusual code path goes first here and elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032179</commentid>
    <comment_count>5</comment_count>
      <attachid>237350</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-08-29 10:00:20 -0700</bug_when>
    <thetext>Comment on attachment 237350
fix cmake build

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

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:264
&gt;&gt; +    if (isSynchronous()) {
&gt; 
&gt; It&apos;s slightly annoying that the unusual code path goes first here and elsewhere.

I agree with if...else cases but here specifically we are doing an early return. I think the favored style is that main body of the function is the common case while early returns are exceptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032202</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-08-29 11:15:44 -0700</bug_when>
    <thetext>https://trac.webkit.org/r173115</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237349</attachid>
            <date>2014-08-29 07:31:20 -0700</date>
            <delta_ts>2014-08-29 07:42:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>remove-networkresourceloadclients.patch</filename>
            <type>text/plain</type>
            <size>42035</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzExMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTA4LTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgTmV0d29ya1Jlc291
cmNlTG9hZGVyQ2xpZW50IGFuZCBzdWJjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb2RlIGlzIG5lZWRsZXNzbHkgYWJzdHJhY3Qu
IE1vdmUgd2hhdCBsb2dpYyB0aGVzZSBjbGFzc2VzIGhhdmUgdG8gTmV0d29ya1Jlc291cmNlTG9h
ZGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQXN5bmNocm9ub3VzTmV0d29ya0xvYWRl
ckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQXN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNTeW5jaHJvbm91cyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRTZW5k
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YTo6U3luY2hyb25v
dXNMb2FkRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3Jr
TG9hZGVyQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TeW5j
aHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTQtMDgtMjggIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgX3NldERpZE1vdmVTd2lwZVNuYXBz
aG90Q2FsbGJhY2sncyBibG9jayBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHNuYXBzaG90
IGlzIGdvaW5nIHRvIG1vdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Fz
eW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0FzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3Bw
CShyZXZpc2lvbiAxNzMwMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Bc3lu
Y2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5OSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFzeW5j
aHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKLSNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1Bc3lu
Y2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xp
ZW50KCkKLXsKLX0KLQotdm9pZCBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKLXsK
LSAgICBsb2FkZXItPnNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSk7Ci19Ci0K
LSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotdm9pZCBBc3luY2hyb25v
dXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IHByb3RlY3Rpb25TcGFjZSkKLXsKLSAgICBsb2FkZXItPnNlbmRBYm9ydGluZ09uRmFpbHVyZShN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7Ci19Ci0jZW5kaWYKLQotdm9pZCBBc3luY2hyb25v
dXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0d29ya1Jlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAg
IGxvYWRlci0+c2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhyZXNwb25zZSwgQ2VydGlm
aWNhdGVJbmZvKHJlc3BvbnNlKSwgbG9hZGVyLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkpOwot
fQotCi12b2lkIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZm
ZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCi17Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTApCi0gICAgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKLSAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIo
c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUsIGJ1ZmZlcik7Ci0gICAgaWYgKCFzaGFyZWFibGVSZXNv
dXJjZUhhbmRsZS5pc051bGwoKSkgewotICAgICAgICAvLyBTaW5jZSB3ZSdyZSBkZWxpdmVyaW5n
IHRoaXMgcmVzb3VyY2UgYnkgb3Vyc2VsdmVzIGFsbCBhdCBvbmNlIGFuZCBkb24ndCBuZWVkIGFu
eW1vcmUgZGF0YSBvciBjYWxsYmFja3MgZnJvbSB0aGUgbmV0d29yayBsYXllciwgYWJvcnQgdGhl
IGxvYWRlci4KLSAgICAgICAgbG9hZGVyLT5hYm9ydCgpOwotICAgICAgICBsb2FkZXItPnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzb3VyY2Uoc2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUsIGN1cnJlbnRUaW1lKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLQotICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKGJ1ZmZlcik7Ci0g
ICAgbG9hZGVyLT5zZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YShkYXRhUmVmZXJlbmNlLCBlbmNvZGVkRGF0YUxlbmd0aCkpOwot
fQotCi12b2lkIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OmRpZFNlbmREYXRhKE5l
dHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQotewotICAgIGxvYWRlci0+
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFNlbmREYXRhKGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50KSk7Ci19Ci0KLXZvaWQgQXN5bmNocm9ub3VzTmV0d29ya0xvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwg
ZG91YmxlIGZpbmlzaFRpbWUpCi17Ci0gICAgbG9hZGVyLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKGZpbmlzaFRpbWUpKTsKLX0KLQotdm9p
ZCBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBsb2Fk
ZXItPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2Fk
KGVycm9yKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Fz
eW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Bc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDE3MzAwOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0FzeW5jaHJv
bm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50X2gK
LSNkZWZpbmUgQXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudF9oCi0KLSNpbmNsdWRlICJO
ZXR3b3JrTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKLQot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50IDogcHVibGljIE5ldHdvcmtMb2FkZXJD
bGllbnQgewotcHVibGljOgotICAgIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQoKTsK
LQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7Ci0j
aWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2aXJ0dWFsIHZvaWQg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKLSNlbmRpZgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0d29ya1Jlc291cmNlTG9hZGVy
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciosIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFNlbmREYXRhKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtSZXNv
dXJjZUxvYWRlciosIGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLSNlbmRpZiAvLyBBc3luY2hyb25vdXNOZXR3
b3JrTG9hZGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE3MzAwOSkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOZXR3b3JrTG9hZGVy
Q2xpZW50X2gKLSNkZWZpbmUgTmV0d29ya0xvYWRlckNsaWVudF9oCi0KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgUmVzb3VyY2VFcnJvcjsK
LWNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI7Ci0KLWNsYXNzIE5ldHdvcmtMb2FkZXJDbGllbnQgewotcHVibGljOgotICAg
IHZpcnR1YWwgfk5ldHdvcmtMb2FkZXJDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKSA9IDA7Ci0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKLSAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSA9IDA7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoTmV0d29ya1Jlc291cmNlTG9hZGVy
KiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrUmVz
b3VyY2VMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTeW5jaHJvbm91cygpIHsgcmV0dXJuIGZh
bHNlOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBOZXR3b3JrTG9hZGVyQ2xpZW50KCkgeyB9Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0KLSNlbmRpZiAvLyBOZXR3b3JrTG9hZGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMTczMDA5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCi0jaW5jbHVkZSAiQXN5bmNocm9ub3VzTmV0d29y
a0xvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00MCwxNSAr
MzksMTcgQEAKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCi0jaW5jbHVk
ZSAiU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1
ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEwMywyMCArMTA0
LDE5IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAgICAg
bV9idWZmZXJlZERhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogCiAgICAg
aWYgKHJlcGx5KQotICAgICAgICBtX25ldHdvcmtMb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudD4obV9yZXF1ZXN0LCByZXBseSk7Ci0g
ICAgZWxzZQotICAgICAgICBtX25ldHdvcmtMb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ+KCk7CisgICAgICAgIG1fc3luY2hyb25v
dXNMb2FkRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4obV9yZXF1
ZXN0LCByZXBseSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5ldHdvcmtSZXNvdXJj
ZUxvYWRlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1faGFuZGxlKTsKKyAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSB8fCAhbV9zeW5jaHJvbm91
c0xvYWREYXRhLT5tX2RlbGF5ZWRSZXBseSk7CiB9CiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjppc1N5bmNocm9ub3VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9uZXR3b3JrTG9hZGVy
Q2xpZW50LT5pc1N5bmNocm9ub3VzKCk7CisgICAgcmV0dXJuICEhbV9zeW5jaHJvbm91c0xvYWRE
YXRhOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQpAQCAtMTg5LDkg
KzE4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAKLSAgICBtX25l
dHdvcmtMb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7Cisg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkKKyAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhLT5t
X3Jlc3BvbnNlID0gcmVzcG9uc2U7CisgICAgZWxzZQorICAgICAgICBzZW5kQWJvcnRpbmdPbkZh
aWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2VXaXRo
Q2VydGlmaWNhdGVJbmZvKHJlc3BvbnNlLCBDZXJ0aWZpY2F0ZUluZm8ocmVzcG9uc2UpLCBpc0xv
YWRpbmdNYWluUmVzb3VyY2UoKSkpOwogCi0gICAgLy8gbV9oYW5kbGUgd2lsbCBiZSAwIGlmIHRo
ZSByZXF1ZXN0IGdvdCBhYm9ydGVkIGFib3ZlLgorICAgIC8vIG1faGFuZGxlIHdpbGwgYmUgbnVs
bCBpZiB0aGUgcmVxdWVzdCBnb3QgYWJvcnRlZCBhYm92ZS4KICAgICBpZiAoIW1faGFuZGxlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTIxMiwyNSArMjE1LDI1IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnUKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFu
ZGxlID09IG1faGFuZGxlKTsKIAotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IEZvciB0
aGUgbWVtb3J5IGNhY2hlIHdlJ2xsIGFsc28gbmVlZCB0byBjYWNoZSB0aGUgcmVzcG9uc2UgZGF0
YSBoZXJlLgotICAgIC8vIFN1Y2ggYnVmZmVyaW5nIHdpbGwgbmVlZCB0byBiZSB0aHJlYWQgc2Fm
ZSwgYXMgdGhpcyBjYWxsYmFjayBpcyBoYXBwZW5pbmcgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4K
LSAgICAKICAgICBtX2J5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7Ci0gICAgaWYgKG1f
YnVmZmVyZWREYXRhKQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewogICAgICAgICBtX2J1ZmZl
cmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX25ldHdv
cmtMb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIodGhpcywgYnVmZmVyLmdldCgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2VuZEJ1ZmZlcihi
dWZmZXIuZ2V0KCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91Ymxl
IGZpbmlzaFRpbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hh
bmRsZSk7CiAKLSAgICAvLyBTZW5kIHRoZSBmdWxsIHJlc291cmNlIGRhdGEgaWYgd2Ugd2VyZSBi
dWZmZXJpbmcgaXQuCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhICYmIG1fYnVmZmVyZWREYXRhLT5z
aXplKCkpCi0gICAgICAgIG1fbmV0d29ya0xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcih0
aGlzLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbV9idWZmZXJlZERhdGEtPnNpemUoKSk7Ci0KLSAg
ICBtX25ldHdvcmtMb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRpbmcodGhpcywgZmluaXNoVGlt
ZSk7CisgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkp
OworICAgIGVsc2UgeworICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgbV9idWZmZXJlZERh
dGEtPnNpemUoKSkKKyAgICAgICAgICAgIHNlbmRCdWZmZXIobV9idWZmZXJlZERhdGEuZ2V0KCks
IG1fYnVmZmVyZWREYXRhLT5zaXplKCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKGZpbmlzaFRpbWUpKTsKKyAgICB9CiAK
ICAgICBjbGVhbnVwKCk7CiB9CkBAIC0yMzksNyArMjQyLDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGYWlsKFJlc28KIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFu
ZGxlID09IG1faGFuZGxlKTsKIAotICAgIG1fbmV0d29ya0xvYWRlckNsaWVudC0+ZGlkRmFpbCh0
aGlzLCBlcnJvcik7CisgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgeworICAgICAgICBtX3N5bmNo
cm9ub3VzTG9hZERhdGEtPm1fZXJyb3IgPSBlcnJvcjsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5j
aHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbnVsbHB0cik7CisgICAgfSBl
bHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVz
b3VyY2VMb2FkKGVycm9yKSk7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0yNTIsMTAgKzI1OSwy
MiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1CiAgICAgQVNTRVJU
KCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCA9IHJlcXVlc3Q7CiAg
ICAgbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0ID0gcmVxdWVzdDsKIAotICAg
IG1fbmV0d29ya0xvYWRlckNsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHByb3Bvc2VkUmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgeworICAg
ICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBmaXhlZCB0byBmb2xsb3cgdGhlIHJlZGly
ZWN0IGNvcnJlY3RseSBldmVuIGZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMuCisgICAgICAgIC8v
IFRoaXMgaW5jbHVkZXMgYXQgbGVhc3QgdXBkYXRpbmcgaG9zdCByZWNvcmRzLCBhbmQgY29tcGFy
aW5nIHRoZSBjdXJyZW50IHJlcXVlc3QgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCBo
ZXJlLgorICAgICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1fc3luY2hyb25v
dXNMb2FkRGF0YS0+bV9vcmlnaW5hbFJlcXVlc3QudXJsKCksIHJlcXVlc3QudXJsKCkpKQorICAg
ICAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhLT5tX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVz
dDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobV9zeW5jaHJvbm91c0xvYWRE
YXRhLT5tX2Vycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0
YS0+bV9lcnJvciA9IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+bV9jdXJyZW50UmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KG1fc3luY2hyb25vdXNMb2FkRGF0YS0+bV9jdXJyZW50UmVxdWVzdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKQEAgLTI5Miw3ICsz
MTEsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAKLSAgICBtX25ldHdv
cmtMb2FkZXJDbGllbnQtPmRpZFNlbmREYXRhKHRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1Rv
QmVTZW50KTsKKyAgICBpZiAoIWlzU3luY2hyb25vdXMoKSkKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1Rv
QmVTZW50KSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3YXNCbG9ja2VkKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC0zNTIsNiArMzcyLDM4IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmMKICAgICBkaWRGYWlsKG1faGFuZGxlLmdldCgpLCBj
YW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3sKKyAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CisKKyNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MCkKKyAgICBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHNoYXJlYWJsZVJl
c291cmNlSGFuZGxlOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxl
SGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihzaGFyZWFibGVSZXNvdXJjZUhhbmRsZSwgYnVmZmVyKTsK
KyAgICBpZiAoIXNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgIC8v
IFNpbmNlIHdlJ3JlIGRlbGl2ZXJpbmcgdGhpcyByZXNvdXJjZSBieSBvdXJzZWx2ZXMgYWxsIGF0
IG9uY2UgYW5kIGRvbid0IG5lZWQgYW55bW9yZSBkYXRhIG9yIGNhbGxiYWNrcyBmcm9tIHRoZSBu
ZXR3b3JrIGxheWVyLCBhYm9ydCB0aGUgbG9hZGVyLgorICAgICAgICBhYm9ydCgpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNlKHNo
YXJlYWJsZVJlc291cmNlSGFuZGxlLCBjdXJyZW50VGltZSgpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
CisKKyAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShidWZm
ZXIpOworICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKGRhdGFSZWZlcmVuY2UsIGVuY29kZWREYXRhTGVuZ3RoKSk7Cit9
CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVx
dWVzdChTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKK3sKKyAgICBBU1NFUlQoZGF0YS5tX2RlbGF5ZWRSZXBseSk7CisgICAgQVNTRVJUKCFk
YXRhLm1fcmVzcG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEubV9lcnJvci5pc051bGwoKSk7CisKKyAg
ICBWZWN0b3I8Y2hhcj4gcmVzcG9uc2VCdWZmZXI7CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIt
PnNpemUoKSkKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisKKyAgICBkYXRhLm1fZGVsYXllZFJlcGx5LT5zZW5kKGRhdGEubV9l
cnJvciwgZGF0YS5tX3Jlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CisgICAgZGF0YS5tX2RlbGF5
ZWRSZXBseSA9IG51bGxwdHI7Cit9CisKIElQQzo6Q29ubmVjdGlvbiogTmV0d29ya1Jlc291cmNl
TG9hZGVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpCiB7CiAgICAgcmV0dXJuIGNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKS0+Y29ubmVjdGlvbigpOwpAQCAtMzk1LDcgKzQ0NywxNCBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljCiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxl
KTsKIAotICAgIG1fbmV0d29ya0xvYWRlckNsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZSh0aGlzLCBwcm90ZWN0aW9uU3BhY2UpOworICAgIGlmIChpc1N5bmNocm9u
b3VzKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc2sgdGhlIFdlYlByb2Nlc3Mg
bGlrZSB0aGUgYXN5bmNocm9ub3VzIGNhc2UgYmVsb3cgZG9lcy4KKyAgICAgICAgLy8gVGhpcyBp
cyBjdXJyZW50bHkgaW1wb3NzaWJsZSBhcyB0aGUgV2ViUHJvY2VzcyBpcyBibG9ja2VkIHdhaXRp
bmcgb24gdGhpcyBzeW5jaHJvbm91cyBsb2FkLgorICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRo
YXQgd2UgY2FuIGp1bXAgc3RyYWlnaHQgdG8gdGhlIFVJIHByb2Nlc3MgdG8gcmVzb2x2ZSB0aGlz
LgorICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
dHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2VuZEFib3J0aW5nT25GYWlsdXJl
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29s
IHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNzMwMDkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUxLDcgKzUzLDYgQEAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwotY2xhc3MgTmV0d29ya0xvYWRlckNsaWVudDsKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ7CiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwpAQCAtMTU4LDYgKzE1OSwyMiBAQCBwcml2YXRl
OgogICAgIAogICAgIHZvaWQgcGxhdGZvcm1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCisgICAgc3RydWN0IFN5bmNocm9ub3VzTG9hZERhdGEg
eworICAgICAgICBTeW5jaHJvbm91c0xvYWREYXRhKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4gcmVwbHkpCisgICAgICAg
ICAgICA6IG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAsIG1fZGVsYXll
ZFJlcGx5KHJlcGx5KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9kZWxheWVkUmVw
bHkpOworICAgICAgICB9CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJl
cXVlc3Q7CisgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4gbV9kZWxheWVkUmVw
bHk7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKKyAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX2Vycm9yOworICAgIH07CisgICAgdm9pZCBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChTeW5jaHJvbm91c0xvYWREYXRhJiwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciosIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0
ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKQEAg
LTE3MCw3ICsxODcsOCBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fYnl0ZXNSZWNlaXZlZDsK
IAogICAgIGJvb2wgbV9oYW5kbGVDb252ZXJ0ZWRUb0Rvd25sb2FkOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrTG9hZGVyQ2xpZW50PiBtX25ldHdvcmtMb2FkZXJDbGllbnQ7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRh
OwogCiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgdWludDY0
X3QgbV93ZWJQYWdlSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5j
aHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDE3MzAwOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3luY2hyb25v
dXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgiCi0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxv
YWRlci5oIgotI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotU3luY2hyb25vdXNOZXR3b3JrTG9hZGVy
Q2xpZW50OjpTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiByZXBseSkKLSAg
ICA6IG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBtX2RlbGF5ZWRSZXBseShyZXBs
eSkKLXsKLSAgICBBU1NFUlQobV9kZWxheWVkUmVwbHkpOwotfQotCi1TeW5jaHJvbm91c05ldHdv
cmtMb2FkZXJDbGllbnQ6On5TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQoKQotewotICAg
IC8vIEJ5IHRoZSB0aW1lIGEgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50IGlzIGJlaW5n
IGRlc3Ryb3llZCwgaXQgbXVzdCBhbHdheXMgaGF2ZSBzZW50IGl0cyByZXBseSB0byB0aGUgV2Vi
UHJvY2Vzcy4KLSAgICBBU1NFUlQoIW1fZGVsYXllZFJlcGx5KTsKLX0KLQotdm9pZCBTeW5jaHJv
bm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8pCi17Ci0gICAgLy8gRklYTUU6
IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVjdCBjb3JyZWN0bHkg
ZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgotICAgIC8vIFRoaXMgaW5jbHVkZXMgYXQg
bGVhc3QgdXBkYXRpbmcgaG9zdCByZWNvcmRzLCBhbmQgY29tcGFyaW5nIHRoZSBjdXJyZW50IHJl
cXVlc3QgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCBoZXJlLgotICAgIGlmICghcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1fb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBwcm9wb3Nl
ZFJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIEFTU0VSVChtX2Vycm9yLmlzTnVsbCgpKTsKLSAg
ICAgICAgbV9lcnJvciA9IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3Bv
bnNlRXJyb3IoKTsKLSAgICAgICAgcHJvcG9zZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7
Ci0gICAgfQotICAgIAotICAgIG1fY3VycmVudFJlcXVlc3QgPSBwcm9wb3NlZFJlcXVlc3Q7Ci0g
ICAgbG9hZGVyLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0KTsKLX0K
LQotI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi12b2lkIFN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUHJvdGVjdGlvblNwYWNl
JikKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzayB0aGUgV2ViUHJvY2VzcyBsaWtlIHRo
ZSBhc3luY2hyb25vdXMgY2FzZSBiZWxvdyBkb2VzLgotICAgIC8vIFRoaXMgaXMgY3VycmVudGx5
IGltcG9zc2libGUgYXMgdGhlIFdlYlByb2Nlc3MgaXMgYmxvY2tlZCB3YWl0aW5nIG9uIHRoaXMg
c3luY2hyb25vdXMgbG9hZC4KLSAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgY2FuIGp1bXAg
c3RyYWlnaHQgdG8gdGhlIFVJIHByb2Nlc3MgdG8gcmVzb2x2ZSB0aGlzLgotICAgIGxvYWRlci0+
Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRydWUpOwotfQot
I2VuZGlmCi0KLXZvaWQgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCi17Ci0gICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOwotfQotCi12b2lkIFN5bmNo
cm9ub3VzTmV0d29ya0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIqLCBTaGFyZWRCdWZmZXIqLCBpbnQgLyogZW5jb2RlZERhdGFMZW5ndGggKi8pCi17
Ci0gICAgLy8gTm90aGluZyB0byBkbyBoZXJlLiBEYXRhIGlzIGJ1ZmZlcmVkIGluIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciBhbmQgd2Ugd2lsbCBncmFiIGl0IGZyb20gdGhlcmUKLSAgICAvLyBpbiBz
ZW5kRGVsYXllZFJlcGx5KCkuCi19Ci0KLXZvaWQgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3Vi
bGUgLyogZmluaXNoVGltZSAqLykKLXsKLSAgICBzZW5kRGVsYXllZFJlcGx5KCpsb2FkZXIpOwot
fQotCi12b2lkIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudDo6ZGlkRmFpbChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgbV9lcnJvciA9IGVycm9yOwotICAgIHNlbmREZWxheWVkUmVwbHkoKmxvYWRlcik7Ci19Ci0K
LXZvaWQgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpzZW5kRGVsYXllZFJlcGx5KE5l
dHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQotewotICAgIEFTU0VSVChtX2RlbGF5ZWRSZXBs
eSk7Ci0KLSAgICBpZiAobV9yZXNwb25zZS5pc051bGwoKSkgewotICAgICAgICBBU1NFUlQoIW1f
ZXJyb3IuaXNOdWxsKCkpOwotICAgICAgICAvL3BsYXRmb3JtU3ludGhlc2l6ZUVycm9yUmVzcG9u
c2UoKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8Y2hhcj4gcmVzcG9uc2VEYXRhOwotICAgIFNoYXJl
ZEJ1ZmZlciogYnVmZmVyID0gbG9hZGVyLmJ1ZmZlcmVkRGF0YSgpOwotICAgIGlmIChidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlRGF0YS5hcHBlbmQoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLQotICAgIG1fZGVsYXllZFJlcGx5LT5zZW5kKG1fZXJy
b3IsIG1fcmVzcG9uc2UsIHJlc3BvbnNlRGF0YSk7Ci0gICAgbV9kZWxheWVkUmVwbHkgPSBudWxs
cHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jaHJv
bm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
MTczMDA5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3
b3JrTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50X2gKLSNkZWZpbmUg
U3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50X2gKLQotI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3JrTG9hZGVyQ2xp
ZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudCA6IHB1YmxpYyBOZXR3b3JrTG9hZGVyQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICBTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFBhc3NSZWZQdHI8TWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxh
eWVkUmVwbHk+KTsKLSAgICB2aXJ0dWFsIH5TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQo
KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1N5bmNocm9ub3VzKCkgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBw
cm9wb3NlZFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpIG92ZXJyaWRlOwotI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJB
Q0spCi0gICAgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
Jikgb3ZlcnJpZGU7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihOZXR3b3JrUmVz
b3VyY2VMb2FkZXIqLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBs
b25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBkb3VibGUg
ZmluaXNoVGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0d29ya1Jl
c291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwot
Ci0gICAgdm9pZCBzZW5kRGVsYXllZFJlcGx5KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwotCi0g
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwotICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwotICAgIFJlZlB0cjxNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6
OkRlbGF5ZWRSZXBseT4gbV9kZWxheWVkUmVwbHk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9lcnJvcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQotI2VuZGlmIC8vIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudF9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNzMwMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk5NCwxMSArOTk0LDYgQEAKIAkJNTFG
QTJENzQxNTIxMkRGMTAwQzFCQTBCIC8qIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEy
RDVDMTUyMTFBNTAwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHAgKi87IH07CiAJCTUxRkEyRDc3MTUyMTJFMjYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUZBMkQ3NTE1MjEyRTFFMDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uY3BwICovOyB9OwogCQk1MUZCMDhGRjE2MzlERTFBMDBFQzMyNEEgLyogV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUJGNjU2MTYzOTJGMTUwMDEzMkE3QSAvKiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwICovOyB9OwotCQk1MUZDQjE4NTE3QkJGRTAzMDAzOTRDRDggLyogQXN5bmNocm9ub3Vz
TmV0d29ya0xvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUZDQjE4MDE3QkJGRTAzMDAzOTRDRDggLyogQXN5bmNocm9ub3VzTmV0
d29ya0xvYWRlckNsaWVudC5jcHAgKi87IH07Ci0JCTUxRkNCMTg2MTdCQkZFMDMwMDM5NENEOCAv
KiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZDQjE4MTE3QkJGRTAzMDAzOTRDRDggLyogQXN5
bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oICovOyB9OwotCQk1MUZDQjE4NzE3QkJGRTAz
MDAzOTRDRDggLyogTmV0d29ya0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQ0IxODIxN0JCRkUwMzAwMzk0Q0Q4IC8qIE5ldHdv
cmtMb2FkZXJDbGllbnQuaCAqLzsgfTsKLQkJNTFGQ0IxODgxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5
bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZDQjE4MzE3QkJGRTAzMDAzOTRDRDggLyogU3luY2hy
b25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCAqLzsgfTsKLQkJNTFGQ0IxODkxN0JCRkUwMzAw
Mzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQ0IxODQxN0JCRkUwMzAwMzk0Q0Q4
IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oICovOyB9OwogCQk1MUZEMThCNTE2
NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkQxOEIzMTY1MUZCQUQwMERCRTFD
RSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9OwogCQk1MUZEMThCNjE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAv
KiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MjcyQjI4ODE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3Bw
ICovOyB9OwpAQCAtMzAzNCwxMSArMzAyOSw2IEBACiAJCTUxRkEyRDVDMTUyMTFBNTAwMEMxQkEw
QiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkEyRDc1MTUyMTJFMUUwMEMxQkEw
QiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRkNCMTgwMTdCQkZF
MDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJD
bGllbnQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQXN5bmNocm9ub3VzTmV0d29ya0xvYWRl
ckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRkNCMTgxMTdCQkZF
MDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0FzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFGQ0IxODIxN0JCRkUwMzAwMzk0Q0Q4
IC8qIE5ldHdvcmtMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTmV0d29ya0xvYWRlckNsaWVudC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUZDQjE4MzE3QkJG
RTAzMDAzOTRDRDggLyogU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNs
aWVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJD
bGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUZDQjE4NDE3QkJGRTAz
MDAzOTRDRDggLyogU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkQxOEIzMTY1MUZCQUQwMERCRTFDRSAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmg7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpc3RpY3NEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNzYsMTIgKzUxNjYsOSBAQAog
CQkJCUJDODI4MzdDMTZCNDVEQTUwMEEyNzhGRSAvKiBFbnRyeVBvaW50ICovLAogCQkJCUUxNzk4
Qzc2MTZFNjgxNTUwMDI0MDEzOSAvKiBGaWxlQVBJICovLAogCQkJCTUxMENDN0RDMTYxMzhFMjkw
MEQwM0VEMyAvKiBtYWMgKi8sCi0JCQkJNTFGQ0IxODAxN0JCRkUwMzAwMzk0Q0Q4IC8qIEFzeW5j
aHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwICovLAotCQkJCTUxRkNCMTgxMTdCQkZFMDMw
MDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJNTEz
QTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCAqLywKIAkJCQk1MTNBMTY0QTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCAqLywKIAkJCQk1MTNBMTY0QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCi0JCQkJNTFGQ0IxODIxN0JC
RkUwMzAwMzk0Q0Q4IC8qIE5ldHdvcmtMb2FkZXJDbGllbnQuaCAqLywKIAkJCQk1MTBDQzdERjE2
MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuY3BwICovLAogCQkJCTUxMENDN0UwMTYx
MzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovLAogCQkJCTUxQThBNjE3MTYyN0Y1
QkIwMDBEOTBFOSAvKiBOZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKQEAgLTUxOTMsOCAr
NTE4MCw2IEBACiAJCQkJNTE4MjlEQTMxNjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwICovLAogCQkJCTUxODI5REE0MTYzN0M3MEMwMDA5NTNENiAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggKi8sCiAJCQkJRTFCNzg0NzAxNjNGMjQ2OTAw
MDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggKi8sCi0JCQkJNTFGQ0IxODMxN0JC
RkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAgKi8sCi0J
CQkJNTFGQ0IxODQxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNs
aWVudC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBOZXR3b3JrUHJvY2VzczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC03MjE3LDcgKzcyMDIsNiBAQAogCQkJCUJDQzU2Rjc5MTE1OTk1
N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNEI1RjMxMUY1
MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjMy
OTAzMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTFGQ0IxODYxN0JCRkUwMzAwMzk0Q0Q4IC8qIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0NDMTY5MTg5MDdFQjAwMDFFNkVEOCAvKiBX
S1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMUI1RDVFMTg1ODY5
QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEyMzI4RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTcyODgsNyArNzI3Miw2IEBACiAJCQkJMUE5MEMyMzcxMjY1MDcxNzAw
M0U0NEQ0IC8qIFBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTc0QTU4MTEyRTY2
NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTk1
ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTFGQ0IxODkxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENEYxODJENkY1MDAwMDg3REQ3IC8qIFdL
QnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzQz
QUJCMTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDODc4MEZDMTE2MUMyQjgwMENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NjQsNyArNzc0Nyw2IEBACiAJCQkJQkNFMTdC
N0UxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTM3MEYzNEE1MTgyOUJFQTMwMDkwMjdDOCAvKiBXS05hdmlnYXRp
b25EYXRhSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxRkNCMTg3MTdCQkZFMDMwMDM5
NENEOCAvKiBOZXR3b3JrTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzEzNUFB
OTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFDODZGRjQxMzBCNDZEMzAwMkMxMjU3IC8qIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdEMDExMkI1NkFDMDBFQzhDMjMgLyogV0tQcmVm
ZXJlbmNlc1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzA5LDcgKzkyOTEsNiBAQAogCQkJCTUx
ODM1M0RFMTg4NzEyOEIwMEQ5RkU0NCAvKiBLZXllZERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM5MEExRDMxMjJERDU1RTAwQ0M4QzUwIC8qIEFQSVVSTFJlc3BvbnNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMwMzM3REQxMTI3QTI5ODAwMDhGRjRGNCAvKiBXZWJXaGVlbEV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxRkNCMTg1MTdCQkZFMDMwMDM5NENEOCAvKiBBc3lu
Y2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5Q0Q1
NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzc1MzdGMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVm
ZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTQ3MThCQkUwNDQwMDBGQ0ZDOSAv
KiBQYWdlQ2xpZW50SW1wbElPUy5tbSBpbiBTb3VyY2VzICovLApAQCAtOTQxNiw3ICs5Mzk3LDYg
QEAKIAkJCQkxQUJDM0RGNTE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM4NTgwNjMxMkI4NTA1NzAwRURFQjJFIC8qIFdLT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzg1ODA2MjEyQjg1MDU3MDBFREVC
MkUgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
MUZDQjE4ODE3QkJGRTAzMDAzOTRDRDggLyogU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGNDE4RUZCMTg4N0JEOTcwMDI3OTVGRCAvKiBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNENTk3RDYxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzRjg4OUQxNzE4ODc4NTkzMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237350</attachid>
            <date>2014-08-29 07:42:33 -0700</date>
            <delta_ts>2014-08-29 10:00:20 -0700</delta_ts>
            <desc>fix cmake build</desc>
            <filename>remove-networkresourceloadclients-2.patch</filename>
            <type>text/plain</type>
            <size>42737</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzExMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTA4LTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgTmV0d29ya1Jlc291
cmNlTG9hZGVyQ2xpZW50IGFuZCBzdWJjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb2RlIGlzIG5lZWRsZXNzbHkgYWJzdHJhY3Qu
IE1vdmUgd2hhdCBsb2dpYyB0aGVzZSBjbGFzc2VzIGhhdmUgdG8gTmV0d29ya1Jlc291cmNlTG9h
ZGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQXN5bmNocm9ub3VzTmV0d29ya0xvYWRl
ckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQXN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNTeW5jaHJvbm91cyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRTZW5k
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YTo6U3luY2hyb25v
dXNMb2FkRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3Jr
TG9hZGVyQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TeW5j
aHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTQtMDgtMjggIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgX3NldERpZE1vdmVTd2lwZVNuYXBz
aG90Q2FsbGJhY2sncyBibG9jayBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHNuYXBzaG90
IGlzIGdvaW5nIHRvIG1vdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzMw
MDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTQ1LDEzICsxNDUsMTEgQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiBlbmRpZiAoKQogCiBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCi0gICAgTmV0d29ya1Byb2Nlc3MvQXN5bmNocm9ub3VzTmV0d29y
a0xvYWRlckNsaWVudC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKICAg
ICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKICAg
ICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAogICAgIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKLSAgICBOZXR3b3JrUHJvY2Vz
cy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwCiAKICAgICBOZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0FzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0FzeW5jaHJvbm91c05ldHdv
cmtMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNzMwMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Bc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaCIKLQotI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIK
LSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJj
ZUxvYWRlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1Bc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpBc3luY2hyb25v
dXNOZXR3b3JrTG9hZGVyQ2xpZW50KCkKLXsKLX0KLQotdm9pZCBBc3luY2hyb25vdXNOZXR3b3Jr
TG9hZGVyQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2Fk
ZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKLXsKLSAgICBsb2FkZXItPnNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKSk7Ci19Ci0KLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNL
KQotdm9pZCBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKLXsKLSAgICBsb2FkZXItPnNlbmRB
Ym9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7Ci19Ci0jZW5kaWYK
LQotdm9pZCBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQotewotICAgIGxvYWRlci0+c2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5m
byhyZXNwb25zZSwgQ2VydGlmaWNhdGVJbmZvKHJlc3BvbnNlKSwgbG9hZGVyLT5pc0xvYWRpbmdN
YWluUmVzb3VyY2UoKSkpOwotfQotCi12b2lkIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCi17Ci0jaWYgUExBVEZPUk0o
SU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTApCi0gICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzaGFyZWFibGVSZXNvdXJj
ZUhhbmRsZTsKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRs
ZUZyb21TaGFyZWRCdWZmZXIoc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUsIGJ1ZmZlcik7Ci0gICAg
aWYgKCFzaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkgewotICAgICAgICAvLyBTaW5j
ZSB3ZSdyZSBkZWxpdmVyaW5nIHRoaXMgcmVzb3VyY2UgYnkgb3Vyc2VsdmVzIGFsbCBhdCBvbmNl
IGFuZCBkb24ndCBuZWVkIGFueW1vcmUgZGF0YSBvciBjYWxsYmFja3MgZnJvbSB0aGUgbmV0d29y
ayBsYXllciwgYWJvcnQgdGhlIGxvYWRlci4KLSAgICAgICAgbG9hZGVyLT5hYm9ydCgpOwotICAg
ICAgICBsb2FkZXItPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZl
UmVzb3VyY2Uoc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUsIGN1cnJlbnRUaW1lKCkpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwOTAKLQotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlKGJ1ZmZlcik7Ci0gICAgbG9hZGVyLT5zZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShkYXRhUmVmZXJlbmNlLCBlbmNv
ZGVkRGF0YUxlbmd0aCkpOwotfQotCi12b2lkIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGll
bnQ6OmRpZFNlbmREYXRhKE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KQotewotICAgIGxvYWRlci0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFNl
bmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSk7Ci19Ci0KLXZvaWQgQXN5bmNo
cm9ub3VzTmV0d29ya0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCi17Ci0gICAgbG9hZGVyLT5zZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKGZpbmlz
aFRpbWUpKTsKLX0KLQotdm9pZCBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpkaWRG
YWlsKE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKLXsKLSAgICBsb2FkZXItPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0FzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Bc3luY2hyb25vdXNOZXR3b3Jr
TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE3MzAwOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0FzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBc3luY2hyb25vdXNOZXR3
b3JrTG9hZGVyQ2xpZW50X2gKLSNkZWZpbmUgQXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVu
dF9oCi0KLSNpbmNsdWRlICJOZXR3b3JrTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2hhcmVh
YmxlUmVzb3VyY2UuaCIKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50IDogcHVi
bGljIE5ldHdvcmtMb2FkZXJDbGllbnQgewotcHVibGljOgotICAgIEFzeW5jaHJvbm91c05ldHdv
cmtMb2FkZXJDbGllbnQoKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
bmV3UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7Ci0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
LSAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBv
dmVycmlkZTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0
d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciosIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLSNlbmRpZiAv
LyBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9u
IDE3MzAwOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBOZXR3b3JrTG9hZGVyQ2xpZW50X2gKLSNkZWZpbmUgTmV0d29ya0xvYWRlckNsaWVudF9o
Ci0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xh
c3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7Ci0KLWNsYXNzIE5ldHdvcmtMb2FkZXJDbGll
bnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfk5ldHdvcmtMb2FkZXJDbGllbnQoKSB7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7Ci0jaWYgVVNFKFBST1RFQ1RJT05f
U1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmKSA9IDA7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoTmV0
d29ya1Jlc291cmNlTG9hZGVyKiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKE5ldHdvcmtSZXNv
dXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTeW5jaHJv
bm91cygpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBOZXR3b3JrTG9hZGVy
Q2xpZW50KCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KLSNlbmRpZiAvLyBOZXR3b3JrTG9hZGVyQ2xpZW50X2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTczMDA5KQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCi0jaW5jbHVkZSAi
QXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC00MCwxNSArMzksMTcgQEAKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCi0jaW5jbHVkZSAiU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0
ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5k
bGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTEwMywyMCArMTA0LDE5IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jl
c291cmNlTG8KICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogCiAgICAgaWYgKHJlcGx5KQotICAgICAgICBtX25ldHdvcmtMb2FkZXJDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudD4obV9y
ZXF1ZXN0LCByZXBseSk7Ci0gICAgZWxzZQotICAgICAgICBtX25ldHdvcmtMb2FkZXJDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ+KCk7Cisg
ICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25v
dXNMb2FkRGF0YT4obV9yZXF1ZXN0LCByZXBseSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICBBU1NFUlQoIW1faGFuZGxlKTsKKyAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMo
KSB8fCAhbV9zeW5jaHJvbm91c0xvYWREYXRhLT5tX2RlbGF5ZWRSZXBseSk7CiB9CiAKIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc1N5bmNocm9ub3VzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9uZXR3b3JrTG9hZGVyQ2xpZW50LT5pc1N5bmNocm9ub3VzKCk7CisgICAgcmV0dXJuICEh
bV9zeW5jaHJvbm91c0xvYWREYXRhOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnQoKQpAQCAtMTg5LDkgKzE4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hh
bmRsZSk7CiAKLSAgICBtX25ldHdvcmtMb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSh0
aGlzLCByZXNwb25zZSk7CisgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKKyAgICAgICAgbV9zeW5j
aHJvbm91c0xvYWREYXRhLT5tX3Jlc3BvbnNlID0gcmVzcG9uc2U7CisgICAgZWxzZQorICAgICAg
ICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKHJlc3BvbnNlLCBDZXJ0aWZpY2F0ZUlu
Zm8ocmVzcG9uc2UpLCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkpOwogCi0gICAgLy8gbV9oYW5k
bGUgd2lsbCBiZSAwIGlmIHRoZSByZXF1ZXN0IGdvdCBhYm9ydGVkIGFib3ZlLgorICAgIC8vIG1f
aGFuZGxlIHdpbGwgYmUgbnVsbCBpZiB0aGUgcmVxdWVzdCBnb3QgYWJvcnRlZCBhYm92ZS4KICAg
ICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm47CiAKQEAgLTIxMiwyNSArMjE1LDI1IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnUKIHsKICAgICBBU1NFUlRf
VU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKIAotICAgIC8vIEZJWE1FIChOZXR3
b3JrUHJvY2Vzcyk6IEZvciB0aGUgbWVtb3J5IGNhY2hlIHdlJ2xsIGFsc28gbmVlZCB0byBjYWNo
ZSB0aGUgcmVzcG9uc2UgZGF0YSBoZXJlLgotICAgIC8vIFN1Y2ggYnVmZmVyaW5nIHdpbGwgbmVl
ZCB0byBiZSB0aHJlYWQgc2FmZSwgYXMgdGhpcyBjYWxsYmFjayBpcyBoYXBwZW5pbmcgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KLSAgICAKICAgICBtX2J5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5z
aXplKCk7Ci0gICAgaWYgKG1fYnVmZmVyZWREYXRhKQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkg
ewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgZWxz
ZQotICAgICAgICBtX25ldHdvcmtMb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIodGhpcywg
YnVmZmVyLmdldCgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgc2VuZEJ1ZmZlcihidWZmZXIuZ2V0KCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5k
bGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAKLSAgICAvLyBTZW5kIHRoZSBmdWxsIHJlc291cmNl
IGRhdGEgaWYgd2Ugd2VyZSBidWZmZXJpbmcgaXQuCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhICYm
IG1fYnVmZmVyZWREYXRhLT5zaXplKCkpCi0gICAgICAgIG1fbmV0d29ya0xvYWRlckNsaWVudC0+
ZGlkUmVjZWl2ZUJ1ZmZlcih0aGlzLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbV9idWZmZXJlZERh
dGEtPnNpemUoKSk7Ci0KLSAgICBtX25ldHdvcmtMb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRp
bmcodGhpcywgZmluaXNoVGltZSk7CisgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKKyAgICAgICAg
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9i
dWZmZXJlZERhdGEuZ2V0KCkpOworICAgIGVsc2UgeworICAgICAgICBpZiAobV9idWZmZXJlZERh
dGEgJiYgbV9idWZmZXJlZERhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHNlbmRCdWZmZXIobV9i
dWZmZXJlZERhdGEuZ2V0KCksIG1fYnVmZmVyZWREYXRhLT5zaXplKCkpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKGZpbmlz
aFRpbWUpKTsKKyAgICB9CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0yMzksNyArMjQyLDExIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsKFJlc28KIHsKICAgICBBU1NFUlRf
VU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKIAotICAgIG1fbmV0d29ya0xvYWRl
ckNsaWVudC0+ZGlkRmFpbCh0aGlzLCBlcnJvcik7CisgICAgaWYgKGlzU3luY2hyb25vdXMoKSkg
eworICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEtPm1fZXJyb3IgPSBlcnJvcjsKKyAgICAg
ICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwg
bnVsbHB0cik7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSk7CiAKICAgICBjbGVhbnVwKCk7CiB9
CkBAIC0yNTIsMTAgKzI1OSwyMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1CiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVx
dWVzdCA9IHJlcXVlc3Q7CiAgICAgbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0
ID0gcmVxdWVzdDsKIAotICAgIG1fbmV0d29ya0xvYWRlckNsaWVudC0+d2lsbFNlbmRSZXF1ZXN0
KHRoaXMsIHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgaWYgKGlzU3lu
Y2hyb25vdXMoKSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBmaXhlZCB0
byBmb2xsb3cgdGhlIHJlZGlyZWN0IGNvcnJlY3RseSBldmVuIGZvciBjcm9zcy1kb21haW4gcmVx
dWVzdHMuCisgICAgICAgIC8vIFRoaXMgaW5jbHVkZXMgYXQgbGVhc3QgdXBkYXRpbmcgaG9zdCBy
ZWNvcmRzLCBhbmQgY29tcGFyaW5nIHRoZSBjdXJyZW50IHJlcXVlc3QgaW5zdGVhZCBvZiB0aGUg
b3JpZ2luYWwgcmVxdWVzdCBoZXJlLgorICAgICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKG1fc3luY2hyb25vdXNMb2FkRGF0YS0+bV9vcmlnaW5hbFJlcXVlc3QudXJsKCksIHJl
cXVlc3QudXJsKCkpKQorICAgICAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhLT5tX2N1cnJl
bnRSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9zeW5jaHJvbm91c0xvYWREYXRhLT5tX2Vycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIG1f
c3luY2hyb25vdXNMb2FkRGF0YS0+bV9lcnJvciA9IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojpw
bGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fc3luY2hyb25vdXNMb2Fk
RGF0YS0+bV9jdXJyZW50UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOworICAgICAgICB9Cisg
ICAgICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG1fc3luY2hyb25vdXNMb2FkRGF0YS0+bV9j
dXJyZW50UmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2VuZEFib3J0aW5n
T25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0KHJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCkKQEAgLTI5Miw3ICszMTEsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
U2VuZERhdGEoCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRs
ZSk7CiAKLSAgICBtX25ldHdvcmtMb2FkZXJDbGllbnQtPmRpZFNlbmREYXRhKHRoaXMsIGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICBpZiAoIWlzU3luY2hyb25vdXMoKSkKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFNlbmREYXRhKGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC0zNTIsNiArMzcyLDM4
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmMKICAgICBkaWRGYWls
KG1faGFuZGxlLmdldCgpLCBjYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKIH0KIAordm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBBU1NFUlQoIWlzU3luY2hyb25v
dXMoKSk7CisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MCkKKyAgICBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlIHNoYXJlYWJsZVJlc291cmNlSGFuZGxlOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihzaGFyZWFibGVSZXNvdXJj
ZUhhbmRsZSwgYnVmZmVyKTsKKyAgICBpZiAoIXNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVs
bCgpKSB7CisgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGRlbGl2ZXJpbmcgdGhpcyByZXNvdXJjZSBi
eSBvdXJzZWx2ZXMgYWxsIGF0IG9uY2UgYW5kIGRvbid0IG5lZWQgYW55bW9yZSBkYXRhIG9yIGNh
bGxiYWNrcyBmcm9tIHRoZSBuZXR3b3JrIGxheWVyLCBhYm9ydCB0aGUgbG9hZGVyLgorICAgICAg
ICBhYm9ydCgpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc291cmNlKHNoYXJlYWJsZVJlc291cmNlSGFuZGxlLCBjdXJyZW50VGltZSgpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCisKKyAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZShidWZmZXIpOworICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKGRhdGFSZWZlcmVuY2UsIGVuY29k
ZWREYXRhTGVuZ3RoKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdChTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoZGF0YS5tX2RlbGF5ZWRSZXBs
eSk7CisgICAgQVNTRVJUKCFkYXRhLm1fcmVzcG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEubV9lcnJv
ci5pc051bGwoKSk7CisKKyAgICBWZWN0b3I8Y2hhcj4gcmVzcG9uc2VCdWZmZXI7CisgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5k
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisKKyAgICBkYXRhLm1fZGVsYXllZFJl
cGx5LT5zZW5kKGRhdGEubV9lcnJvciwgZGF0YS5tX3Jlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7
CisgICAgZGF0YS5tX2RlbGF5ZWRSZXBseSA9IG51bGxwdHI7Cit9CisKIElQQzo6Q29ubmVjdGlv
biogTmV0d29ya1Jlc291cmNlTG9hZGVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpCiB7CiAg
ICAgcmV0dXJuIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS0+Y29ubmVjdGlvbigpOwpAQCAtMzk1
LDcgKzQ0NywxNCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwg
aGFuZGxlID09IG1faGFuZGxlKTsKIAotICAgIG1fbmV0d29ya0xvYWRlckNsaWVudC0+Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh0aGlzLCBwcm90ZWN0aW9uU3BhY2UpOwor
ICAgIGlmIChpc1N5bmNocm9ub3VzKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBh
c2sgdGhlIFdlYlByb2Nlc3MgbGlrZSB0aGUgYXN5bmNocm9ub3VzIGNhc2UgYmVsb3cgZG9lcy4K
KyAgICAgICAgLy8gVGhpcyBpcyBjdXJyZW50bHkgaW1wb3NzaWJsZSBhcyB0aGUgV2ViUHJvY2Vz
cyBpcyBibG9ja2VkIHdhaXRpbmcgb24gdGhpcyBzeW5jaHJvbm91cyBsb2FkLgorICAgICAgICAv
LyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgY2FuIGp1bXAgc3RyYWlnaHQgdG8gdGhlIFVJIHByb2Nl
c3MgdG8gcmVzb2x2ZSB0aGlzLgorICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2Vu
ZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNzMw
MDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhh
bmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUx
LDcgKzUzLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotY2xhc3MgTmV0d29ya0xvYWRl
ckNsaWVudDsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOwogY2xhc3MgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwpAQCAtMTU4LDYg
KzE1OSwyMiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgcGxhdGZvcm1EaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCisgICAgc3RydWN0IFN5
bmNocm9ub3VzTG9hZERhdGEgeworICAgICAgICBTeW5jaHJvbm91c0xvYWREYXRhKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBs
eT4gcmVwbHkpCisgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCisgICAg
ICAgICAgICAsIG1fZGVsYXllZFJlcGx5KHJlcGx5KQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQobV9kZWxheWVkUmVwbHkpOworICAgICAgICB9CisgICAgICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CisgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRS
ZXBseT4gbV9kZWxheWVkUmVwbHk7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX2Vycm9yOworICAg
IH07CisgICAgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChTeW5jaHJvbm91c0xv
YWREYXRhJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciosIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisKICAgICB2b2lk
IGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hF
eHRlbnNpb25zKCk7CiAKQEAgLTE3MCw3ICsxODcsOCBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90
IG1fYnl0ZXNSZWNlaXZlZDsKIAogICAgIGJvb2wgbV9oYW5kbGVDb252ZXJ0ZWRUb0Rvd25sb2Fk
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZGVyQ2xpZW50PiBtX25ldHdvcmtMb2Fk
ZXJDbGllbnQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9z
eW5jaHJvbm91c0xvYWREYXRhOwogCiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAgICAgdWludDY0X3QgbV93ZWJQYWdlSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xv
YWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE3MzAwOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgiCi0KLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotU3luY2hy
b25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXll
ZFJlcGx5PiByZXBseSkKLSAgICA6IG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBt
X2RlbGF5ZWRSZXBseShyZXBseSkKLXsKLSAgICBBU1NFUlQobV9kZWxheWVkUmVwbHkpOwotfQot
Ci1TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6On5TeW5jaHJvbm91c05ldHdvcmtMb2Fk
ZXJDbGllbnQoKQotewotICAgIC8vIEJ5IHRoZSB0aW1lIGEgU3luY2hyb25vdXNOZXR3b3JrTG9h
ZGVyQ2xpZW50IGlzIGJlaW5nIGRlc3Ryb3llZCwgaXQgbXVzdCBhbHdheXMgaGF2ZSBzZW50IGl0
cyByZXBseSB0byB0aGUgV2ViUHJvY2Vzcy4KLSAgICBBU1NFUlQoIW1fZGVsYXllZFJlcGx5KTsK
LX0KLQotdm9pZCBTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVz
dChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3Nl
ZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8p
Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSBy
ZWRpcmVjdCBjb3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgotICAgIC8v
IFRoaXMgaW5jbHVkZXMgYXQgbGVhc3QgdXBkYXRpbmcgaG9zdCByZWNvcmRzLCBhbmQgY29tcGFy
aW5nIHRoZSBjdXJyZW50IHJlcXVlc3QgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCBo
ZXJlLgotICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1fb3JpZ2luYWxSZXF1
ZXN0LnVybCgpLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIEFTU0VSVChtX2Vy
cm9yLmlzTnVsbCgpKTsKLSAgICAgICAgbV9lcnJvciA9IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKLSAgICAgICAgcHJvcG9zZWRSZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgfQotICAgIAotICAgIG1fY3VycmVudFJlcXVlc3QgPSBw
cm9wb3NlZFJlcXVlc3Q7Ci0gICAgbG9hZGVyLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChtX2N1
cnJlbnRSZXF1ZXN0KTsKLX0KLQotI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJB
Q0spCi12b2lkIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29u
c3QgUHJvdGVjdGlvblNwYWNlJikKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzayB0aGUg
V2ViUHJvY2VzcyBsaWtlIHRoZSBhc3luY2hyb25vdXMgY2FzZSBiZWxvdyBkb2VzLgotICAgIC8v
IFRoaXMgaXMgY3VycmVudGx5IGltcG9zc2libGUgYXMgdGhlIFdlYlByb2Nlc3MgaXMgYmxvY2tl
ZCB3YWl0aW5nIG9uIHRoaXMgc3luY2hyb25vdXMgbG9hZC4KLSAgICAvLyBJdCdzIHBvc3NpYmxl
IHRoYXQgd2UgY2FuIGp1bXAgc3RyYWlnaHQgdG8gdGhlIFVJIHByb2Nlc3MgdG8gcmVzb2x2ZSB0
aGlzLgotICAgIGxvYWRlci0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKHRydWUpOwotfQotI2VuZGlmCi0KLXZvaWQgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgbV9yZXNwb25zZSA9IHJlc3BvbnNl
OwotfQotCi12b2lkIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBTaGFyZWRCdWZmZXIqLCBpbnQgLyogZW5jb2Rl
ZERhdGFMZW5ndGggKi8pCi17Ci0gICAgLy8gTm90aGluZyB0byBkbyBoZXJlLiBEYXRhIGlzIGJ1
ZmZlcmVkIGluIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBhbmQgd2Ugd2lsbCBncmFiIGl0IGZyb20g
dGhlcmUKLSAgICAvLyBpbiBzZW5kRGVsYXllZFJlcGx5KCkuCi19Ci0KLXZvaWQgU3luY2hyb25v
dXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBkb3VibGUgLyogZmluaXNoVGltZSAqLykKLXsKLSAgICBzZW5kRGVsYXll
ZFJlcGx5KCpsb2FkZXIpOwotfQotCi12b2lkIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVu
dDo6ZGlkRmFpbChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCi17Ci0gICAgbV9lcnJvciA9IGVycm9yOwotICAgIHNlbmREZWxheWVkUmVw
bHkoKmxvYWRlcik7Ci19Ci0KLXZvaWQgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50Ojpz
ZW5kRGVsYXllZFJlcGx5KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQotewotICAgIEFT
U0VSVChtX2RlbGF5ZWRSZXBseSk7Ci0KLSAgICBpZiAobV9yZXNwb25zZS5pc051bGwoKSkgewot
ICAgICAgICBBU1NFUlQoIW1fZXJyb3IuaXNOdWxsKCkpOwotICAgICAgICAvL3BsYXRmb3JtU3lu
dGhlc2l6ZUVycm9yUmVzcG9uc2UoKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8Y2hhcj4gcmVzcG9u
c2VEYXRhOwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyID0gbG9hZGVyLmJ1ZmZlcmVkRGF0YSgp
OwotICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlRGF0
YS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLQotICAgIG1fZGVsYXll
ZFJlcGx5LT5zZW5kKG1fZXJyb3IsIG1fcmVzcG9uc2UsIHJlc3BvbnNlRGF0YSk7Ci0gICAgbV9k
ZWxheWVkUmVwbHkgPSBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gMTczMDA5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVy
Q2xpZW50X2gKLSNkZWZpbmUgU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50X2gKLQotI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRl
ICJOZXR3b3JrTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9y
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudCA6IHB1YmxpYyBOZXR3b3Jr
TG9hZGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGll
bnQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFBhc3NS
ZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3lu
Y2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+KTsKLSAgICB2aXJ0dWFsIH5TeW5jaHJvbm91c05l
dHdvcmtMb2FkZXJDbGllbnQoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1N5bmNo
cm9ub3VzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwotI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlJikgb3ZlcnJpZGU7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YShOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNT
ZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzZW5kRGVsYXllZFJlcGx5KE5ldHdvcmtSZXNv
dXJjZUxvYWRlciYpOwotCi0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxS
ZXF1ZXN0OwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0Owot
ICAgIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZv
cm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4gbV9kZWxheWVkUmVwbHk7Ci0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgbV9lcnJvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQotI2VuZGlmIC8vIFN5bmNocm9ub3VzTmV0d29ya0xv
YWRlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzMwMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk5NCwx
MSArOTk0LDYgQEAKIAkJNTFGQTJENzQxNTIxMkRGMTAwQzFCQTBCIC8qIEluamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRkEyRDVDMTUyMTFBNTAwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5jcHAgKi87IH07CiAJCTUxRkEyRDc3MTUyMTJFMjYwMEMxQkEwQiAv
KiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ3NTE1MjEyRTFFMDBDMUJBMEIgLyogV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovOyB9OwogCQk1MUZCMDhGRjE2MzlERTFBMDBFQzMy
NEEgLyogV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJGNjU2MTYzOTJGMTUwMDEzMkE3QSAvKiBXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwICovOyB9OwotCQk1MUZDQjE4NTE3QkJGRTAzMDAzOTRD
RDggLyogQXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZDQjE4MDE3QkJGRTAzMDAzOTRDRDgg
LyogQXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAgKi87IH07Ci0JCTUxRkNCMTg2
MTdCQkZFMDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZDQjE4MTE3QkJG
RTAzMDAzOTRDRDggLyogQXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oICovOyB9Owot
CQk1MUZDQjE4NzE3QkJGRTAzMDAzOTRDRDggLyogTmV0d29ya0xvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQ0IxODIxN0JCRkUw
MzAwMzk0Q0Q4IC8qIE5ldHdvcmtMb2FkZXJDbGllbnQuaCAqLzsgfTsKLQkJNTFGQ0IxODgxN0JC
RkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZDQjE4MzE3QkJGRTAz
MDAzOTRDRDggLyogU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCAqLzsgfTsKLQkJ
NTFGQ0IxODkxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQ0Ix
ODQxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oICov
OyB9OwogCQk1MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkQx
OEIzMTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9Owog
CQk1MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFG
QkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTUyNzJCMjhB
MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyQjI4ODE0MDY5ODVEMDA5NkE1RDAgLyog
U3RhdGlzdGljc0RhdGEuY3BwICovOyB9OwpAQCAtMzAzNCwxMSArMzAyOSw2IEBACiAJCTUxRkEy
RDVDMTUyMTFBNTAwMEMxQkEwQiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkEy
RDc1MTUyMTJFMUUwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkIwOTAyMTYzQTNCMUMw
MEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUxRkNCMTgwMTdCQkZFMDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVy
Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFzeW5jaHJv
bm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQXN5bmNo
cm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUxRkNCMTgxMTdCQkZFMDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFzeW5jaHJvbm91c05l
dHdvcmtMb2FkZXJDbGllbnQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0FzeW5jaHJvbm91c05l
dHdvcmtMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFGQ0Ix
ODIxN0JCRkUwMzAwMzk0Q0Q4IC8qIE5ldHdvcmtMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0xvYWRlckNsaWVudC5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MUZDQjE4MzE3QkJGRTAzMDAzOTRDRDggLyogU3luY2hyb25vdXNOZXR3b3JrTG9hZGVy
Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9TeW5jaHJv
bm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MUZDQjE4NDE3QkJGRTAzMDAzOTRDRDggLyogU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN5bmNocm9ub3VzTmV0d29y
a0xvYWRlckNsaWVudC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3Jr
TG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkQxOEIzMTY1
MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Jlc291
cmNlTG9hZGVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQw
IC8qIFN0YXRpc3RpY3NEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0YXRpc3RpY3NEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUx
NzYsMTIgKzUxNjYsOSBAQAogCQkJCUJDODI4MzdDMTZCNDVEQTUwMEEyNzhGRSAvKiBFbnRyeVBv
aW50ICovLAogCQkJCUUxNzk4Qzc2MTZFNjgxNTUwMDI0MDEzOSAvKiBGaWxlQVBJICovLAogCQkJ
CTUxMENDN0RDMTYxMzhFMjkwMEQwM0VEMyAvKiBtYWMgKi8sCi0JCQkJNTFGQ0IxODAxN0JCRkUw
MzAwMzk0Q0Q4IC8qIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwICovLAotCQkJ
CTUxRkNCMTgxMTdCQkZFMDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xp
ZW50LmggKi8sCiAJCQkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQk1MTNBMTY0QTE2MzBBOUJGMDA1RDdEMjIgLyog
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQk1MTNBMTY0QjE2MzBBOUJG
MDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8s
Ci0JCQkJNTFGQ0IxODIxN0JCRkUwMzAwMzk0Q0Q4IC8qIE5ldHdvcmtMb2FkZXJDbGllbnQuaCAq
LywKIAkJCQk1MTBDQzdERjE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuY3BwICov
LAogCQkJCTUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovLAog
CQkJCTUxQThBNjE3MTYyN0Y1QkIwMDBEOTBFOSAvKiBOZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
biAqLywKQEAgLTUxOTMsOCArNTE4MCw2IEBACiAJCQkJNTE4MjlEQTMxNjM3QzcwQzAwMDk1M0Q2
IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwICovLAogCQkJCTUxODI5REE0MTYz
N0M3MEMwMDA5NTNENiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggKi8sCiAJCQkJ
RTFCNzg0NzAxNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggKi8s
Ci0JCQkJNTFGQ0IxODMxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRl
ckNsaWVudC5jcHAgKi8sCi0JCQkJNTFGQ0IxODQxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBOZXR3b3JrUHJv
Y2VzczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MjE3LDcgKzcyMDIsNiBAQAog
CQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMjMyOTAzMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTFGQ0IxODYxN0JCRkUwMzAwMzk0Q0Q4IC8qIEFzeW5jaHJv
bm91c05ldHdvcmtMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0NDMTY5MTg5
MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEMUI1RDVFMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI4RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1l
c3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTcyODgsNyArNzI3Miw2IEBACiAJCQkJ
MUE5MEMyMzcxMjY1MDcxNzAwM0U0NEQ0IC8qIFBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlDNTc0QTU4MTEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMTk1ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTFGQ0IxODkxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENEYxODJE
NkY1MDAwMDg3REQ3IC8qIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQzQzQUJCMTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODc4MEZDMTE2MUMyQjgwMENDMjc2OCAvKiBQ
bGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NjQsNyArNzc0
Nyw2IEBACiAJCQkJQkNFMTdCN0UxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VW
aXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MEYzNEE1MTgyOUJFQTMwMDkw
MjdDOCAvKiBXS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
RkNCMTg3MTdCQkZFMDMwMDM5NENEOCAvKiBOZXR3b3JrTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDODZGRjQxMzBCNDZEMzAwMkMxMjU3IC8qIFdLUGx1
Z2luU2l0ZURhdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdEMDExMkI1NkFD
MDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlc1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzA5LDcg
KzkyOTEsNiBAQAogCQkJCTUxODM1M0RFMTg4NzEyOEIwMEQ5RkU0NCAvKiBLZXllZERlY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MEExRDMxMjJERDU1RTAwQ0M4QzUwIC8qIEFQSVVS
TFJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwMzM3REQxMTI3QTI5ODAwMDhGRjRG
NCAvKiBXZWJXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxRkNCMTg1MTdCQkZF
MDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5Q0Q1NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzc1MzdGMTgzQkU1MEYw
MDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTQ3
MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5tbSBpbiBTb3VyY2VzICovLApA
QCAtOTQxNiw3ICs5Mzk3LDYgQEAKIAkJCQkxQUJDM0RGNTE4OTlFNDM3MDA0RjA2MjYgLyogTmF2
aWdhdGlvblN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTgwNjMxMkI4NTA1NzAwRURF
QjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzg1
ODA2MjEyQjg1MDU3MDBFREVCMkUgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1MUZDQjE4ODE3QkJGRTAzMDAzOTRDRDggLyogU3luY2hyb25vdXNO
ZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGNDE4RUZCMTg4N0JE
OTcwMDI3OTVGRCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENTk3RDYxMTJCNTZEQzAwRUM4QzIzIC8qIFdL
UGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRjg4OUQxNzE4ODc4NTkzMDBGRUFEQUYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="262078"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>