<?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>152557</bug_id>
          
          <creation_ts>2015-12-25 01:19:58 -0800</creation_ts>
          <short_desc>Stop moving local objects in return statements</short_desc>
          <delta_ts>2015-12-30 15:34:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=152601</see_also>
          <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="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1151321</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-25 01:19:58 -0800</bug_when>
    <thetext>Stop moving local objects in return statements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151322</commentid>
    <comment_count>1</comment_count>
      <attachid>267915</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-25 01:42:59 -0800</bug_when>
    <thetext>Created attachment 267915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151329</commentid>
    <comment_count>2</comment_count>
      <attachid>267920</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-25 04:37:19 -0800</bug_when>
    <thetext>Created attachment 267920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151330</commentid>
    <comment_count>3</comment_count>
      <attachid>267920</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-25 08:09:04 -0800</bug_when>
    <thetext>Comment on attachment 267920
Patch

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

Can you resubmit for the commit queue to see if mac-debug clears up?

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        I found these issues by temporarily replacing WTF::move with WTF::move and recompiling.

&quot;WTF::move&quot; and &quot;WTF::move&quot; are the same string, so I suspect there&apos;s a typo in your ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151331</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-25 09:13:42 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 267920 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267920&amp;action=review
&gt; 
&gt; Can you resubmit for the commit queue to see if mac-debug clears up?

Sure, I&apos;ll try.

&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; +        I found these issues by temporarily replacing WTF::move with WTF::move and recompiling.
&gt; 
&gt; &quot;WTF::move&quot; and &quot;WTF::move&quot; are the same string, so I suspect there&apos;s a typo
&gt; in your ChangeLog.

Hah, this ChangeLog is in the JSC Xcode project for some reason, so this got swept up in my global replace of std::move back to WTF::move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151332</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-25 09:27:50 -0800</bug_when>
    <thetext>There is no need to re-submit for EWS, it keeps trying. You can learn what&apos;s going on by hovering the bubble, or by clicking on it.

Someone probably landed a bad patch while no one was watching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151334</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-25 09:56:27 -0800</bug_when>
    <thetext>Hmm, in fact it&apos;s because bot ews113 went crazy, and somehow, each attempt ran on the same bot. Something is wrong here, but for now, I just rebooted it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151342</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-25 15:18:01 -0800</bug_when>
    <thetext>OH OH OH!

This hasn&apos;t landed yet, good!

Because I thought of a super obvious improvement: Make check-webkit-style warn for &quot;return WTF::move(&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151343</commentid>
    <comment_count>8</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-25 16:35:22 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; OH OH OH!
&gt; 
&gt; This hasn&apos;t landed yet, good!
&gt; 
&gt; Because I thought of a super obvious improvement: Make check-webkit-style
&gt; warn for &quot;return WTF::move(&quot;

There&apos;s at least one case where (I believe) we have to move a return value:

class Base {
};

class Derived : public Base {
};

std::unique_ptr&lt;Base&gt; create()
{
    auto derived { std::make_unique&lt;Derived&gt;() };
    return WTF::move(derived);
}

Since the type of create()&apos;s return value differs from the type of the local, this function is not eligible for the RVO, and since std::unique_ptr&lt;&gt; is a move-only type, it can&apos;t be copied into the return value.

There&apos;s also one more case where it&apos;s acceptable (although not mandatory) to move a return value, and that&apos;s a member function that releases a member variable to the caller (although I&apos;d prefer we use std::exchange() for those cases).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151456</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-28 08:26:45 -0800</bug_when>
    <thetext>Committed r194428: &lt;http://trac.webkit.org/changeset/194428&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267915</attachid>
            <date>2015-12-25 01:42:59 -0800</date>
            <delta_ts>2015-12-25 04:37:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152557-20151225014223.patch</filename>
            <type>text/plain</type>
            <size>53243</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjAwNmRiOWZkNzI4Mjc3Y2MzYThiZjU1NTY3NDk3YTFjNmU3M2Q4Li40ZWQ3ZjFmNDc5MjFiZjYy
MzZhODA4Mzc3MzY3ODhkOWJlZDBiYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNS0xMi0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcCBtb3ZpbmcgbG9jYWwgb2JqZWN0cyBpbiByZXR1cm4gc3RhdGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTU3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbGluZyBz
dGQ6Om1vdmUoKSBvbiBhIGxvY2FsIG9iamVjdCBpbiBhIHJldHVybiBzdGF0ZW1lbnQgcHJldmVu
dHMgdGhlIGNvbXBpbGVyIGZyb20gYXBwbHlpbmcgdGhlIHJldHVybiB2YWx1ZSBvcHRpbWl6YXRp
b24uCisKKyAgICAgICAgQ2xhbmcgY2FuIHdhcm4gYWJvdXQgdGhlc2UgbWlzdGFrZXMgd2l0aCAt
V3Blc3NpbWl6aW5nLW1vdmUsIGFsdGhvdWdoIG9ubHkgd2hlbiBzdGQ6Om1vdmUoKSBpcyBjYWxs
ZWQgZGlyZWN0bHkuCisgICAgICAgIEkgZm91bmQgdGhlc2UgaXNzdWVzIGJ5IHRlbXBvcmFyaWx5
IHJlcGxhY2luZyBXVEY6Om1vdmUgd2l0aCBzdGQ6Om1vdmUgYW5kIHJlY29tcGlsaW5nLgorCisg
ICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OlNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6YnVpbGRJbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAqIGppdC9DYWxsRnJh
bWVTaHVmZmxlci5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6c25hcHNob3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5jcHA6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6
OmFsbFN0cnVjdHVyZVJlcHJlc2VudGF0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNo
YXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlvbik6CisKIDIwMTUtMTItMjMgIEFuZHJlYXMgS2xp
bmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIGpzYyBDTEkgdG9vbCBjcmFzaGVzIG9u
IEVPRi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggMjAwZDM1NGEzNzZmNzc2NGM3MmU5OWUxNjQxZTNjYjcwY2E3ODUyMC4uMTk1
NzJiY2E4ZTQzNjM1YmY4ODM2NmNkZjZlZWI0NDQ3NmFhYjZhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxNS0xMi0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3RvcCBtb3ZpbmcgbG9jYWwgb2JqZWN0cyBpbiByZXR1cm4gc3RhdGVtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFz
Lmg6IEFkZGVkIGEgRklYTUUgYWJvdXQgaG93IHVzaW5nIFdURjo6bW92ZSgpIHByZXZlbnRzIHNl
dmVyYWwgQ2xhbmcgZGlhZ25vc3RpY3MgZnJvbSBlbWl0dGluZyB1c2VmdWwgd2FybmluZ3MuCisK
IDIwMTUtMTItMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBG
VEwgQjMgc2hvdWxkIGJlIGFibGUgdG8gcnVuIHJpY2hhcmRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM1YWU3
MDYxZDE4MWExNTQ0M2UyOWYzMWUyNmIyODFjZmI0MTQ0OS4uOTRmNjUyNWJlMTA5ZDNhZDk3ZjJk
OWE5ZTdhZWE4NmI3ZjU4ODQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxNS0x
Mi0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBtb3Zp
bmcgbG9jYWwgb2JqZWN0cyBpbiByZXR1cm4gc3RhdGVtZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTU3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbGluZyBzdGQ6Om1vdmUoKSBvbiBhIGxv
Y2FsIG9iamVjdCBpbiBhIHJldHVybiBzdGF0ZW1lbnQgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZy
b20gYXBwbHlpbmcgdGhlIHJldHVybiB2YWx1ZSBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgQ2xh
bmcgY2FuIHdhcm4gYWJvdXQgdGhlc2UgbWlzdGFrZXMgd2l0aCAtV3Blc3NpbWl6aW5nLW1vdmUs
IGFsdGhvdWdoIG9ubHkgd2hlbiBzdGQ6Om1vdmUoKSBpcyBjYWxsZWQgZGlyZWN0bHkuCisgICAg
ICAgIEkgZm91bmQgdGhlc2UgaXNzdWVzIGJ5IHRlbXBvcmFyaWx5IHJlcGxhY2luZyBXVEY6Om1v
dmUgd2l0aCBzdGQ6Om1vdmUgYW5kIHJlY29tcGlsaW5nLgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmRl
bGV0ZWRWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFi
YXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpv
YmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJh
c2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6dGFrZU5leHRSdW5uYWJsZVRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJh
c2VJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW5mbzo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW5mbzo6b2JqZWN0U3RvcmVOYW1l
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6ZXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6dmVyc2lvbkNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9m
ZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmZvcm1hdE51bWJlclZhbHVlKToKKyAgICAgICAgKiBkb20vTm9kZU9yU3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJh
eUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpidWlsZE9iamVjdEZvckhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclF1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlWEhSVGV4dERlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvckNvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZv
ckZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE1lZGlhT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
bGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZSk6CisgICAgICAgICogaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVT
YW1wbGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlRXZlbnREaXNwYXRjaERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZXJJbnN0YWxsRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVTdGFtcERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVBbmlt
YXRpb25GcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVBhaW50RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
ICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dGlvbkFjdGlvbjo6Y29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3Bl
bkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRl
UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbjo6ZXZhbHVhdGUpOgorCiAyMDE1LTEyLTI0
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZB
SUxFRDogeDIgPj0geDEgaW4gV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hT
aWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggMmFlZmU5OTAzMzZhZTlmMDFmMWU5YjQwYzA5ZmYwNmExNDFkNzI2
MS4uNmExZDI4MTkxMDQ4YmQzYzM1ZWJjMTg2YmEwNmUzYzY5ZWFlNTVkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDE1LTEyLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBTdG9wIG1vdmluZyBsb2NhbCBvYmplY3RzIGluIHJldHVybiBzdGF0ZW1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI1
NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxs
aW5nIHN0ZDo6bW92ZSgpIG9uIGEgbG9jYWwgb2JqZWN0IGluIGEgcmV0dXJuIHN0YXRlbWVudCBw
cmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbSBhcHBseWluZyB0aGUgcmV0dXJuIHZhbHVlIG9wdGlt
aXphdGlvbi4KKworICAgICAgICBDbGFuZyBjYW4gd2FybiBhYm91dCB0aGVzZSBtaXN0YWtlcyB3
aXRoIC1XcGVzc2ltaXppbmctbW92ZSwgYWx0aG91Z2ggb25seSB3aGVuIHN0ZDo6bW92ZSgpIGlz
IGNhbGxlZCBkaXJlY3RseS4KKyAgICAgICAgSSBmb3VuZCB0aGVzZSBpc3N1ZXMgYnkgdGVtcG9y
YXJpbHkgcmVwbGFjaW5nIFdURjo6bW92ZSB3aXRoIHN0ZDo6bW92ZSBhbmQgcmVjb21waWxpbmcu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKToKKwogMjAxNS0x
Mi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2UgImNvbnN0cmFpbmVkQmV0d2VlbiIgaW4gbW9yZSBwbGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCA0OWIwNzE5
ZjVhNGE3MWI5NWFiZDJlYzBjNzVhOGU3NTcxYTE5NGMyLi42NWVjOWRlMjU2YWNlY2U3NGE5NDM4
YWEyMjM3NDk3OTljMzBiMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IFNjcmlwdENhbGxTdGFjazo6YnVp
bGRJbnNwZWN0b3JBcnIKICAgICBhdXRvIGZyYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OlN0YWNrVHJhY2U6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1lcy0+YWRkSXRlbShtX2ZyYW1lcy5h
dChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGZyYW1l
cyk7CisgICAgcmV0dXJuIGZyYW1lczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGI3MjA3OGNh
N2FhODNmZjY5ZmE0NmQyZGQ2MDZmOGNmNmEyNDM5NmUuLjBiMWNmNTk4YjJjNjIwMzlhNmJhZGM4
OTI1ZTQ0OTI2YmE3ZTMzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6VGltZWxp
bmU6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlAKICAg
ICAgICAgcmVzdWx0LT5zZXRDaGlsZHJlbihXVEY6Om1vdmUoY2hpbGRyZW4pKTsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
c3RhdGljIFJlZjxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGU+IGJ1aWxkUHJvZmlsZUlu
c3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGUqIHByb2ZpbGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmgKaW5kZXggYzk5M2U4Yzc1MjkxYmE2
N2RjYzMzYTI4MjFjYjdjM2I1ZDU4YzJmNC4uNDVhNzczMDk5ZDJhMjdjZmY3YWI0NTg3ZDdmMTQ2
NWUyMWViNDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJh
bWVTaHVmZmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1
ZmZsZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
V1RGOjptb3ZlKGRhdGEpOworICAgICAgICByZXR1cm4gZGF0YTsKICAgICB9CiAKICAgICAvLyBB
c2sgdGhlIHNodWZmbGVyIHRvIHB1dCB0aGUgY2FsbGVlIGludG8gc29tZSByZWdpc3RlcnMgb25j
ZSB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggYTQz
NmNkYTEzMWQ1YTdjZTc1ZjY4NGRlODljYzA3MDkwMmI4ODY1MC4uYTAyZTJhNjg2MTM4MzI4YTMx
ODdkOWNiZWU4ZTk4MDc5ZWFhZTY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpbwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsr
KQogICAgICAgICBkZXNjcmlwdGlvbi0+YWRkSXRlbShtX3N0cnVjdHVyZUhpc3RvcnkuYXQoaSkt
Pmluc3BlY3RvclJlcHJlc2VudGF0aW9uKCkpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShkZXNj
cmlwdGlvbik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCiBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6VHlwZVNldD4gVHlwZVNldDo6aW5zcGVjdG9yVHlwZVNldCgpIGNv
bnN0CkBAIC01MjMsNyArNTIzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVTaGFwZTo6aW5zcGVjdG8KICAgICAgICAg
Y3VycmVudFNoYXBlID0gY3VycmVudFNoYXBlLT5tX3Byb3RvOwogICAgIH0KIAotICAgIHJldHVy
biBXVEY6Om1vdmUoYmFzZSk7CisgICAgcmV0dXJuIGJhc2U7CiB9CiAKIGJvb2wgU3RydWN0dXJl
U2hhcGU6Omhhc1NhbWVQcm90b3R5cGVDaGFpbihQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBw
cnBPdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIGIvU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggOGYyZjMzMWFhMDg0NjgyNjM2Yzc5NTQx
YjM4NmIzNmE0YThjOTdlZi4uOTJiYTQzMGEwOTcyMmE1MDRlOTVkNDI5YzUzMTVlNWM5MzVjZTVi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBp
c1BvaW50ZXJUeXBlQWxpZ25tZW50T2theShUeXBlKikKIAogbmFtZXNwYWNlIFdURiB7CiAKKy8v
IEZJWE1FOiBVc2luZyB0aGlzIGZ1bmN0aW9uIHByZXZlbnRzIENsYW5nJ3MgbW92ZSBkaWFnbm9z
dGljcyAoLVdwZXNzaW1pemluZy1tb3ZlLCAtV3JlZHVuZGFudC1tb3ZlLCAtV3NlbGYtbW92ZSkg
ZnJvbQorLy8gZmluZGluZyBtaXN0YWtlcywgc2luY2UgdGhlc2UgZGlhZ25vc3RpY3Mgb25seSBl
dmFsdWF0ZSBjYWxscyB0byBzdGQ6Om1vdmUoKS4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBBTFdB
WVNfSU5MSU5FIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYmIG1vdmUo
VCYmIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggOTRiN2NhZjI5Njk1MGFkMzgx
ODQ2NGJjOWRmNThmZmJiMDliODJkMi4uZGQ5NGUxZjUxNTg1MTE3YmZlMjYwZmRkY2Q0ZDAyNTZh
ZGZhMTA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElEQkRhdGFi
YXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiAgICAgaWRlbnRpZmllci5tX29wZW5pbmdPcmlnaW4gPSBtX29wZW5pbmdPcmlnaW4uaXNvbGF0
ZWRDb3B5KCk7CiAgICAgaWRlbnRpZmllci5tX21haW5GcmFtZU9yaWdpbiA9IG1fbWFpbkZyYW1l
T3JpZ2luLmlzb2xhdGVkQ29weSgpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShpZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKaW5kZXggMTQyZjI0
OGEzYWFiZTMwNjE3N2Q1MTIxMDA4ZmVkZTg2Yzc3OTAwZC4uZmQzNjUxOTdlNmRmZGEzZWQzZmU4
ODY0OWRhNzM1NTY0NzE4MjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5RGF0YS5jcHAKQEAgLTMyNCw3ICszMjQsNyBAQCBJREJLZXlEYXRhIElEQktl
eURhdGE6OmRlbGV0ZWRWYWx1ZSgpCiAgICAgSURCS2V5RGF0YSByZXN1bHQ7CiAgICAgcmVzdWx0
Lm1faXNOdWxsID0gZmFsc2U7CiAgICAgcmVzdWx0Lm1faXNEZWxldGVkVmFsdWUgPSB0cnVlOwot
ICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBi
b29sIElEQktleURhdGE6Om9wZXJhdG9yPChjb25zdCBJREJLZXlEYXRhJiByaHMpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0
YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDA4YjUwZGJkYmMzODc0MmM3NDgxMDZkYjQ4M2I2ZTky
NGM0ZjE3NjguLjNlMmRjYTQzOTYxYzA1NDdiNjhlMTI5MzJmZDNlMTNjY2M3OWYyMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFz
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJEYXRhYmFzZUltcGwuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBu
YW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKICAgICAgICAgb2JqZWN0U3RvcmVOYW1l
cy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQoKTsKLSAgICByZXR1
cm4gV1RGOjptb3ZlKG9iamVjdFN0b3JlTmFtZXMpOworICAgIHJldHVybiBvYmplY3RTdG9yZU5h
bWVzOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJikKQEAgLTI2Niw3ICsyNjYsNyBAQCBSZWY8SURCVHJhbnNhY3Rp
b24+IElEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjb25zdCBJREJU
cmFuc2FjdAogCiAgICAgbV9hY3RpdmVUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLT5pbmZv
KCkuaWRlbnRpZmllcigpLCAmdHJhbnNhY3Rpb24uZ2V0KCkpOwogCi0gICAgcmV0dXJuIFdURjo6
bW92ZSh0cmFuc2FjdGlvbik7CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uOwogfQogCiB2b2lkIElE
QkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJUcmFuc2FjdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKaW5kZXggMjhmNGJkOTU2ZGI1OTU4Yzc5NDk0
ZDllZDYyYTA2NTNkOTU3YTRhYi4uNDIxN2Y3N2VmZGE2N2JjODJlNTMzMGYxNzI2OGQ4MjE0NWRh
MjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTQ0NCw3ICs0NDQsNyBAQCBS
ZWY8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mCiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVPYmplY3RTdG9y
ZU9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIsIGlu
Zm8pOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURjo6bW92ZShvcGVyYXRpb24pKTsKIAotICAg
IHJldHVybiBXVEY6Om1vdmUob2JqZWN0U3RvcmUpOworICAgIHJldHVybiBvYmplY3RTdG9yZTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGlu
Zm8pCkBAIC00NzMsNyArNDczLDcgQEAgUmVmPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREIKICAgICBhdXRv
IG9wZXJhdGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCAmSURCVHJhbnNh
Y3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5k
ZXhPblNlcnZlciwgaW5mbyk7CiAgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3ZlKG9wZXJh
dGlvbikpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShpbmRleCk7CisgICAgcmV0dXJuIGluZGV4
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyKFRyYW5zYWN0
aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKQEAgLTUy
OSw3ICs1MjksNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAgIGF1dG8gb3BlcmF0aW9u
ID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJU
cmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246Om9wZW5D
dXJzb3JPblNlcnZlciwgY3Vyc29yLT5pbmZvKCkpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdU
Rjo6bW92ZShvcGVyYXRpb24pKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVzdCk7Cisg
ICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JP
blNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJDdXJzb3JJ
bmZvJiBpbmZvKQpAQCAtNTg0LDcgKzU4NCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldFJlY29yZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0CiAg
ICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVx
dWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlciwgJklEQlRy
YW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlciwga2V5UmFuZ2VEYXRhKTsKICAgICBzY2hlZHVs
ZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3Zl
KHJlcXVlc3QpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBSZWY8SURCUmVxdWVzdD4gSURC
VHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCkBAIC02
MTEsNyArNjExLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5k
ZXhSZWNvcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGUKICAgICBhdXRvIG9wZXJhdGlv
biA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURC
VHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmdldFJl
Y29yZE9uU2VydmVyLCByYW5nZSk7CiAgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3ZlKG9w
ZXJhdGlvbikpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKKyAgICByZXR1cm4g
cmVxdWVzdDsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoVHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlS
YW5nZSkKQEAgLTczMiw3ICs3MzIsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgYXV0
byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5n
ZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIsICZJREJU
cmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURjo6bW92ZShvcGVyYXRpb24pKTsKIAotICAg
IHJldHVybiBXVEY6Om1vdmUocmVxdWVzdCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlcihUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KQpAQCAtNzYzLDcgKzc2Myw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdFB1dE9yQWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsCiAgICAgYXV0byBv
cGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQo
KSwgJklEQlRyYW5zYWN0aW9uOjpkaWRQdXRPckFkZE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246
OnB1dE9yQWRkT25TZXJ2ZXIsIGtleSwgJnZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKICAgICBzY2hl
ZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CiAKLSAgICByZXR1cm4gV1RGOjpt
b3ZlKHJlcXVlc3QpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpwdXRPckFkZE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIFJl
ZlB0cjxJREJLZXk+IGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNv
bnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlJiBvdmVyd3JpdGVNb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggYTAwYTBlMjE4ZjUwMTRmN2ExMTY5NmY2Zjgw
NTE1YTQxMWU0MzI3Zi4uMDdhZDU0YWJmMGM3NTE4NjVmZWUwZTY4YTBkMDYyNjg3MjY2MTExNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0xMDg1LDEzICsxMDg1LDEzIEBAIFJlZlB0
cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBVbmlxdWVJREJEYXRhYmFzZTo6dGFrZU5l
eHRSdW5uYWJsZVRyYW5zYWN0CiAKICAgICBoYWREZWZlcnJlZFRyYW5zYWN0aW9ucyA9ICFkZWZl
cnJlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCk7CiAgICAgaWYgKCFoYWREZWZlcnJlZFRyYW5zYWN0
aW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShjdXJyZW50VHJhbnNhY3Rpb24pOworICAg
ICAgICByZXR1cm4gY3VycmVudFRyYW5zYWN0aW9uOwogCiAgICAgLy8gUHJlcGVuZCB0aGUgZGVm
ZXJyZWQgdHJhbnNhY3Rpb25zIGJhY2sgb24gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGVxdWUgZm9y
IGZ1dHVyZSBzY2hlZHVsaW5nIHBhc3Nlcy4KICAgICB3aGlsZSAoIWRlZmVycmVkVHJhbnNhY3Rp
b25zLmlzRW1wdHkoKSkKICAgICAgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25zLnByZXBlbmQoZGVm
ZXJyZWRUcmFuc2FjdGlvbnMudGFrZUxhc3QoKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGN1
cnJlbnRUcmFuc2FjdGlvbik7CisgICAgcmV0dXJuIGN1cnJlbnRUcmFuc2FjdGlvbjsKIH0KIAog
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW5Qcm9ncmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNl
SW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0
YWJhc2VJbmZvLmNwcAppbmRleCBhZTQwMjJiYTljMDk3OGY5MDBkOWM2NjI0MzIwZDUxNjI2OTQ0
YzE5Li40NGFhNDdlNmQ4ODQ0MzVhNDA4ODliNzc5OGY2NWNmN2MxZDIwODg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0
YWJhc2VJbmZvLmNwcApAQCAtNDcsNyArNDcsNyBAQCBJREJEYXRhYmFzZUluZm8gSURCRGF0YWJh
c2VJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIGluZm8ubV9uYW1lID0gbV9uYW1lLmlz
b2xhdGVkQ29weSgpOwogICAgIGluZm8ubV92ZXJzaW9uID0gbV92ZXJzaW9uOwogCi0gICAgcmV0
dXJuIFdURjo6bW92ZShpbmZvKTsKKyAgICByZXR1cm4gaW5mbzsKIH0KIAogYm9vbCBJREJEYXRh
YmFzZUluZm86Omhhc09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKQEAgLTEy
Myw3ICsxMjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBJREJEYXRhYmFzZUluZm86Om9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdAogICAgIGZvciAoYXV0byYgb2JqZWN0U3RvcmUgOiBtX29iamVjdFN0b3Jl
TWFwLnZhbHVlcygpKQogICAgICAgICBuYW1lcy51bmNoZWNrZWRBcHBlbmQob2JqZWN0U3RvcmUu
bmFtZSgpKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUobmFtZXMpOworICAgIHJldHVybiBuYW1l
czsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUluZm86OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IDMxYWVmOGZjNDA4
M2ZjZWFjZDgyODUxMjBlZGY2ZDU3NDcyYjIwNTIuLjMwMmVlZTc5YWM0YjkwMzg1YjVkOGYwMzY2
ZjkxZTM1MjBkY2ZjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgSURC
UmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdChyZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6OkVycm9yOwogICAg
IHJlc3VsdC5tX2Vycm9yID0gZXJyb3I7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3Bl
bkRhdGFiYXNlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCBJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlv
bikKQEAgLTc2LDcgKzc2LDcgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0
YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmUKICAgICByZXN1bHQu
bV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlU3VjY2VzczsKICAgICByZXN1bHQu
bV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7
CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS5pbmZvKCkpOwotICAgIHJldHVybiBXVEY6Om1v
dmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAKQEAgLTg3LDcgKzg3LDcgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigp
OwogICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLmluZm8o
KSk7CiAgICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJU
cmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92
ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2Fj
dGlvbkluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlRyYW5zYWN0aW9uSW5mby5jcHAKaW5kZXggN2I4OWVkNzVkNzI5OGI3NTEzNTBiMzNlMTJkNDlk
ZDkxNDVhZmViOC4uZmU1YWVlOGNhNWJkOGQwNjU5NjEyOWFjMWU4ZGI0YTJlY2M4YmRhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5z
YWN0aW9uSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgSURCVHJhbnNhY3Rp
b25JbmZvIElEQlRyYW5zYWN0aW9uSW5mbzo6dmVyc2lvbkNoYW5nZShjb25zdCBJREJTZXJ2ZXI6
OklEQkNvbm5lY3QKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjsKICAgICBy
ZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCVHJhbnNhY3Rpb25JbmZvOjpJREJU
cmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpAQCAtNzksNyAr
NzksNyBAQCBJREJUcmFuc2FjdGlvbkluZm8gSURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENv
cHkoKSBjb25zdAogICAgIGlmIChtX29yaWdpbmFsRGF0YWJhc2VJbmZvKQogICAgICAgICByZXN1
bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJ
bmZvPigqbV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggMWVmNDA1NGFjYTZkNDg2YjE2YjhjYWVkN2RlOWU4YTVm
ZGMwMDMwOS4uNTA2ZTkyMWNjMjNiNTZhYjMwY2VhYWRlNmE1YTRiNWNmNDVkYzJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoKQogewogICAgIFJlZjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Qcm9jZXNzSURCU2VydmVyKTsK
ICAgICBzZXJ2ZXItPm1fc2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oc2VydmVyLT5jb25uZWN0
aW9uVG9DbGllbnQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShzZXJ2ZXIpOworICAgIHJldHVy
biBzZXJ2ZXI7CiB9CiAKIEluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQuY3BwCmluZGV4IGU1ZWQ5NDg0ODE5NWExOTc1MmYyZjE0NjI5ZTAxMzkyNGViNjdm
OTEuLjhhNjFhZWFlNDE1NTkwNzdkOWQ0ZDI1MzZkOGE2MTQ2YTcwOTU1ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gT2ZmbGlu
ZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAKICAgICBSZWZQ
dHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KGFkb3B0UmVmKG5ldyBPZmZsaW5l
QXVkaW9Db250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywg
c2FtcGxlUmF0ZSkpKTsKICAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAg
IHJldHVybiBXVEY6Om1vdmUoYXVkaW9Db250ZXh0KTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0
OwogfQogCiBPZmZsaW5lQXVkaW9Db250ZXh0OjpPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJh
bWVzLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDc5YmNjYzRiMDAyZWU1M2Y4
M2JmYTljNmZjMDUzYWU2MDgxYWNiMjguLjFmZTlmMWFlYzY5NjNmZWEzOTY2MmE5N2UwYmJiZjE0
OWFiMWE3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWZQdHI8T3JpZ2lu
TG9jaz4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiAgICAgQVNTRVJUKGxvY2spOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBs
b2NrOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShsb2NrKTsKKyAgICByZXR1cm4gbG9jazsKIH0K
IAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKaW5kZXggMGY0NzY4MTVjNTQxYjBjMTM5M2NjODEyMTU2MDU2Njc2OGYzYTZjZS4u
OTQ0NzBjYWY3N2VhMmZmMmYxZGY4NTFlYWE5YmFhNTRlNDA5ZjIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbgogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHdlYlNvY2tldCk7CisgICAgcmV0dXJu
IHdlYlNvY2tldDsKIH0KIAogUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggZGRiODAyM2ZhYjY5N2ZkMjgzYTE3MDcxMDUzZWEzZTNi
NmQ2OWIyOS4uODIzNjdmZTcxZTU1ZjQ4MDk3YzhlOWEwM2FmNjM0NjE4NjEwMmI4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC05NzYsNyArOTc2LDcgQEAg
TkVWRVJfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVt
YmVyVmFsdWUoY29uc3QgY2hhciogc3UKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3Vm
Zml4TGVuZ3RoOyArK2kpCiAgICAgICAgIGJ1ZmZlcltsZW5ndGggKyBpXSA9IHN0YXRpY19jYXN0
PExDaGFyPihzdWZmaXhbaV0pOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShzdHJpbmcpOworICAg
IHJldHVybiBzdHJpbmc7CiB9CiAKIHRlbXBsYXRlIDx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVPclN0cmluZy5jcHAKaW5kZXggYThhOGVmN2UxMTBkYjk1NDVkY2I4
ZTgwOTEzMWNkZGM5ODE5OTY4MC4uZDVmMjVlNDJhYTYxZTQ4MWIxZjQ3NWZiMjE1YzNhMDNmMTY4
YmY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVPclN0cmluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVPclN0cmluZy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
UmVmUHRyPE5vZGU+IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKE5vZGUmIGNvbnRleHQs
IFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1
cm4gV1RGOjptb3ZlKG5vZGVUb1JldHVybik7CisgICAgcmV0dXJuIG5vZGVUb1JldHVybjsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCA4MDk4
OTEyZjgyY2ZiNWM0ZWI0MmIwYjY1ZGQ1M2RhYjQ3YTczMDQ0Li5jYmQ5YTdhY2E3MmJmZGFjNzhj
MTdlZmQ1OTY1ZWJiOGZiNThlMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtMTY0LDcg
KzE2NCw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvCiAgICAgZm9yIChjb25zdCBhdXRvJiBy
ZXNvdXJjZUluZm8gOiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQogICAgICAgICByZXNvdXJj
ZXMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UocmVzb3Vy
Y2VJbmZvKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc291cmNlcyk7CisgICAgcmV0dXJu
IHJlc291cmNlczsKIH0KIAogUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJiByZXNvdXJjZUluZm8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA0MjE4NzJjMmM5MjY4
YTc4NTA4NzU2MTVhMWU2OTI5ZDAzYTgzM2RhLi5jN2NjODhjNmM5ODAxM2Y0YjBhYWU3NjcwMjdm
ZjJlZjZlMzlmMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKQEAgLTEzNzYsNyArMTM3Niw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSoK
ICAgICAgICAgICAgIHZhbHVlLT5zZXRSb2xlKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmco
KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZSh2YWx1ZSk7CisgICAgcmV0dXJuIHZh
bHVlOwogfQogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVt
ZW50KQpAQCAtMTM4NCwxMyArMTM4NCwxMyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QQogICAg
IGF1dG8gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pjo6Y3JlYXRlKCk7CiAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmlidXRlcyBhbmQgc2VyaWFs
aXplIHRoZW0uCiAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om1vdmUoYXR0cmlidXRlc1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZXNWYWx1ZTsKICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxlbWVudC0+
YXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKICAgICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBwYWlyCiAg
ICAgICAgIGF0dHJpYnV0ZXNWYWx1ZS0+YWRkSXRlbShhdHRyaWJ1dGUubmFtZSgpLnRvU3RyaW5n
KCkpOwogICAgICAgICBhdHRyaWJ1dGVzVmFsdWUtPmFkZEl0ZW0oYXR0cmlidXRlLnZhbHVlKCkp
OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjptb3ZlKGF0dHJpYnV0ZXNWYWx1ZSk7CisgICAgcmV0
dXJuIGF0dHJpYnV0ZXNWYWx1ZTsKIH0KIAogUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWls
ZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5v
ZGVUb0lkTWFwKiBub2Rlc01hcCkKQEAgLTE0MDMsNyArMTQwMyw3IEBAIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0
b3JET01BZ2VuCiAgICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVjdEZvck5v
ZGUoZmlyc3RDaGlsZCwgMCwgbm9kZXNNYXApKTsKICAgICAgICAgICAgIG1fY2hpbGRyZW5SZXF1
ZXN0ZWQuYWRkKGJpbmQoY29udGFpbmVyLCBub2Rlc01hcCkpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBXVEY6Om1vdmUoY2hpbGRyZW4pOworICAgICAgICByZXR1cm4gY2hpbGRyZW47CiAg
ICAgfQogCiAgICAgTm9kZSogY2hpbGQgPSBpbm5lckZpcnN0Q2hpbGQoY29udGFpbmVyKTsKQEAg
LTE0MTQsNyArMTQxNCw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VuCiAgICAgICAgIGNoaWxk
cmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShjaGlsZCwgZGVwdGgsIG5vZGVzTWFwKSk7
CiAgICAgICAgIGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCk7CiAgICAgfQotICAgIHJl
dHVybiBXVEY6Om1vdmUoY2hpbGRyZW4pOworICAgIHJldHVybiBjaGlsZHJlbjsKIH0KIAogUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQpAQCAtMTQ4MSw3ICsx
NDgxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXYKICAgICAgICAgaWYgKCFzb3VyY2VOYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHZhbHVlLT5zZXRTb3VyY2VOYW1lKHNvdXJjZU5hbWUp
OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjptb3ZlKHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7
CiB9CiAgICAgCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwcm9jZXNzQWNjZXNzaWJpbGl0eUNo
aWxkcmVuKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYmIGF4T2JqZWN0LCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mJiBjaGlsZE5vZGVJZHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRl
eCA4YzQ1MzM3ZGRhZjhkYWE4NWYxZWU0ODI3ODUyMGRkYzlhODE0ZGM3Li5lNjc2MzNhMjg5ZGQy
MzgwMzE2NDgxOWQ3MjkwODUyZDczYzBlNmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTIyNSw3ICsyMjUsNyBA
QCBzdGF0aWMgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcgogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRi
VHJhbnNhY3Rpb24gPSBpZGJEYXRhYmFzZS0+dHJhbnNhY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgb2JqZWN0U3RvcmVOYW1lLCBtb2RlLCBlYyk7CiAgICAgaWYgKGVjLmNvZGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBXVEY6Om1vdmUoaWRiVHJhbnNhY3Rpb24p
OworICAgIHJldHVybiBpZGJUcmFuc2FjdGlvbjsKIH0KIAogc3RhdGljIFJlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gb2JqZWN0U3RvcmVGb3JUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiogaWRiVHJh
bnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpAQCAtMjM0LDcgKzIzNCw3
IEBAIHN0YXRpYyBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlRm9yVHJhbnNhY3Rp
b24oSURCVHJhbnNhY3Rpb24qIGlkYlRyYW5zCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBp
ZGJPYmplY3RTdG9yZSA9IGlkYlRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUsIGVjKTsKICAgICBpZiAoZWMuY29kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFdURjo6bW92ZShpZGJPYmplY3RTdG9yZSk7CisgICAgcmV0dXJuIGlkYk9iamVjdFN0
b3JlOwogfQogCiBzdGF0aWMgUmVmUHRyPElEQkluZGV4PiBpbmRleEZvck9iamVjdFN0b3JlKElE
Qk9iamVjdFN0b3JlKiBpZGJPYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCkBA
IC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIFJlZlB0cjxJREJJbmRleD4gaW5kZXhGb3JPYmplY3RT
dG9yZShJREJPYmplY3RTdG9yZSogaWRiT2JqZWN0U3RvcmUsIGNvbnMKICAgICBSZWZQdHI8SURC
SW5kZXg+IGlkYkluZGV4ID0gaWRiT2JqZWN0U3RvcmUtPmluZGV4KGluZGV4TmFtZSwgZWMpOwog
ICAgIGlmIChlYy5jb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV1RG
Ojptb3ZlKGlkYkluZGV4KTsKKyAgICByZXR1cm4gaWRiSW5kZXg7CiB9CiAKIHN0YXRpYyBSZWZQ
dHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IElEQktleVBhdGgmIGlkYktl
eVBhdGgpCkBAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRo
RnJvbUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShrZXlQYXRo
KTsKKyAgICByZXR1cm4ga2V5UGF0aDsKIH0KIAogY2xhc3MgRGF0YWJhc2VMb2FkZXIgOiBwdWJs
aWMgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCA2NDE1YWZkOWE3MTk0OTFm
NTQ2NTg0OTA3ZDMxMWIyMmFmYWFjYTE1Li43MDQ0MzU3OTM1ZmQ1MTAxOGNlOGZlNzViMmQ3ODAy
YTFlZDQwOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxk
T2JqZWN0RgogICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImZpcnN0
LWxpbmUiKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGxheWVyT2JqZWN0KTsKKyAg
ICByZXR1cm4gbGF5ZXJPYmplY3Q7CiB9CiAKIGludCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
aWRGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgTm9kZSogbm9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXgg
ZjVmYzZlNjlkYTE3ODg2NDVhZjVmZWUyMDQxYjZmMGFkMjUyMjk2OS4uZmZlOTIzMGI0MWMxYmFh
OWE2NmU0NzA5NjhkMjg0OGRmMTc5MmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0
aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBo
ZWFkZXJzKQogICAgICAgICBoZWFkZXJzT2JqZWN0LT5zZXRTdHJpbmcoaGVhZGVyLmtleSwgaGVh
ZGVyLnZhbHVlKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGhlYWRlcnNPYmplY3QpOworICAgIHJl
dHVybiBoZWFkZXJzT2JqZWN0OwogfQogCiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNv
dXJjZUxvYWRUaW1pbmcmIHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKQEAgLTIxMiw3
ICsyMTIsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVl
c3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KAogICAgICAgICAucmVsZWFzZSgpOwog
ICAgIGlmIChyZXF1ZXN0Lmh0dHBCb2R5KCkgJiYgIXJlcXVlc3QuaHR0cEJvZHkoKS0+aXNFbXB0
eSgpKQogICAgICAgICByZXF1ZXN0T2JqZWN0LT5zZXRQb3N0RGF0YShyZXF1ZXN0Lmh0dHBCb2R5
KCktPmZsYXR0ZW5Ub1N0cmluZygpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3RPYmpl
Y3QpOworICAgIHJldHVybiByZXF1ZXN0T2JqZWN0OwogfQogCiBzdGF0aWMgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291cmNl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXMKICAg
ICBpZiAoIXNvdXJjZU1hcHBpbmdVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXNvdXJjZU9iamVj
dC0+c2V0U291cmNlTWFwVVJMKHNvdXJjZU1hcHBpbmdVUkwpOwogCi0gICAgcmV0dXJuIFdURjo6
bW92ZShyZXNvdXJjZU9iamVjdCk7CisgICAgcmV0dXJuIHJlc291cmNlT2JqZWN0OwogfQogCiBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6On5JbnNwZWN0b3JOZXR3b3JrQWdlbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDg1ODBkMzFkMjhj
Y2I5MmZhMjQxZTRkMDIwMzg5OGM5YzZjODhjMjAuLjA3NDcyMWRmNzQzZmZlMGM5ODFkNGFmZDA2
M2ExYTA5Y2I3YjYyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHAKQEAgLTM3Miw3ICszNzIsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6UXVhZD4gYnVpbGRBcnJheUZvclF1YWQoY29uc3QgRmxvYQog
ICAgIGFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wMigpKSk7CiAgICAg
YXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAzKCkpKTsKICAgICBhcnJh
eS0+YWRkSXRlbShidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDQoKSkpOwotICAgIHJldHVybiBX
VEY6Om1vdmUoYXJyYXkpOworICAgIHJldHVybiBhcnJheTsKIH0KIAogc3RhdGljIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4gYnVp
bGRPYmplY3RGb3JIaWdobGlnaHQoY29uc3QgSGlnaGxpZ2h0JiBoaWdobGlnaHQpCkBAIC00NTAs
NyArNDUwLDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4KICAgICAgICAgYXJyYXlPZlJlZ2lv
bnMtPmFkZEl0ZW0oV1RGOjptb3ZlKHJlZ2lvbk9iamVjdCkpOwogICAgIH0KIAotICAgIHJldHVy
biBXVEY6Om1vdmUoYXJyYXlPZlJlZ2lvbnMpOworICAgIHJldHVybiBhcnJheU9mUmVnaW9uczsK
IH0KIAogc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlNpemU+
IGJ1aWxkT2JqZWN0Rm9yU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtODM0LDcgKzgzNCw3
IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHRECiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1
cm4gV1RGOjptb3ZlKGhpZ2hsaWdodHMpOworICAgIHJldHVybiBoaWdobGlnaHRzOwogfQogCiB2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdOb2RlSGlnaGxpZ2h0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMGUwMDAyMWQ4MjFh
ZmZhZWRjZDIyNzAxMmQyZjU1Mjc5YjhkZDA2Zi4uZGM4ZmIwOWQ0OGI4MmYxNTU0YmRkMGZmMWEx
MzNmZTBhNWFlYTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IGNyZWF0ZVhIUlRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
CiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRt
bCIsICJVVEYtOCIpOwogICAgIGVsc2UKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwotICAgIHJldHVybiBXVEY6Om1v
dmUoZGVjb2Rlcik7CisgICAgcmV0dXJuIGRlY29kZXI7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFn
ZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291
cmNlLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCkKQEAgLTQ0Myw3ICs0NDMs
NyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxkQQogICAgIGZvciAoY29uc3QgYXV0byYgY29va2ll
IDogY29va2llc0xpc3QpCiAgICAgICAgIGNvb2tpZXMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JD
b29raWUoY29va2llKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGNvb2tpZXMpOworICAgIHJl
dHVybiBjb29raWVzOwogfQogCiBzdGF0aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVk
UmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQpAQCAtOTA4LDcgKzkwOCw3IEBAIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWls
ZE9iamVjdEZvckZyYW1lKEZyCiAgICAgICAgIGZyYW1lT2JqZWN0LT5zZXROYW1lKG5hbWUpOwog
ICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUoZnJhbWVPYmplY3QpOworICAgIHJldHVybiBm
cmFtZU9iamVjdDsKIH0KIAogUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZy
YW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAppbmRleCA2NGIxZDQ1OTA5OGQyMjk1YmY2YTZhYzk3ZGYxNTAyYTdhMWRlZGJh
Li4zZjViNDFhMWU5MjFiODdmYmVmNzUzZjhiM2EyNmQwMjg5ZmJlOGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xODMsNyAr
MTgzLDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPiBi
dWlsZE1lZGlhT2JqZWN0KGNvbnN0IE1lZGlhTGlzdCoKICAgICAgICAgbWVkaWFPYmplY3QtPnNl
dFNvdXJjZVVSTChzb3VyY2VVUkwpOwogICAgICAgICBtZWRpYU9iamVjdC0+c2V0U291cmNlTGlu
ZShtZWRpYS0+cXVlcmllcygpLT5sYXN0TGluZSgpKTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6
bW92ZShtZWRpYU9iamVjdCk7CisgICAgcmV0dXJuIG1lZGlhT2JqZWN0OwogfQogCiBzdGF0aWMg
UmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQpCkBAIC0zMjcsNyArMzI3LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnQKICAgICAgICAg
cmVzdWx0LT5hZGRJdGVtKFdURjo6bW92ZShlbnRyeSkpOwogICAgIH0KIAotICAgIHJldHVybiBX
VEY6Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIEluc3BlY3Rv
clN0eWxlOjpnZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdApAQCAtODc1LDcgKzg3NSw3IEBA
IHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRP
YmplY3RGb3JTZWxlY3RvckhlbHBlcihjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
V1RGOjptb3ZlKGluc3BlY3RvclNlbGVjdG9yKTsKKyAgICByZXR1cm4gaW5zcGVjdG9yU2VsZWN0
b3I7CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3Qg
Q1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBj
b25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCwgRWxlbWVudCogZWxlbWVudCkKQEAg
LTg5OSw3ICs4OTksNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZQogCiAgICAgICAgIHNlbGVj
dG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKTsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgRWxlbWVudCog
ZWxlbWVudCkKQEAgLTkzMSw3ICs5MzEsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUwogICAg
ICAgICAucmVsZWFzZSgpOwogICAgIGlmIChzb3VyY2VEYXRhKQogICAgICAgICByZXN1bHQtPnNl
dFJhbmdlKGJ1aWxkU291cmNlUmFuZ2VPYmplY3Qoc291cmNlRGF0YS0+cnVsZUhlYWRlclJhbmdl
LCBsaW5lRW5kaW5ncygpLmdldCgpKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1J1bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHls
ZVJ1bGUqIHJ1bGUsIEVsZW1lbnQqIGVsZW1lbnQpCkBAIC05OTIsNyArOTkyLDcgQEAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmJ1aWxkT2JqZWN0Rm9yU3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1v
dmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIEluc3BlY3RvclN0eWxl
U2hlZXQ6OnNldFN0eWxlVGV4dChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgU3RyaW5nKiBvbGRUZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEyMzEsNyAr
MTIzMSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsCiB7CiAgICAgYXV0byByZXN1bHQgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1
bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQotICAgICAgICByZXR1cm4gV1RGOjpt
b3ZlKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBSZWZQdHI8Q1NTUnVs
ZUxpc3Q+IHJlZlJ1bGVMaXN0ID0gcnVsZUxpc3Q7CiAgICAgQ1NTU3R5bGVSdWxlVmVjdG9yIHJ1
bGVzOwpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4+IEluc3BlY3RvclN0eWwKICAgICBm
b3IgKGF1dG8mIHJ1bGUgOiBydWxlcykKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2Jq
ZWN0Rm9yUnVsZShydWxlLmdldCgpLCBudWxscHRyKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3Zl
KHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBJbnNwZWN0b3JTdHlsZVNo
ZWV0Ojpjb2xsZWN0RmxhdFJ1bGVzKFJlZlB0cjxDU1NSdWxlTGlzdD4mJiBydWxlTGlzdCwgQ1NT
U3R5bGVSdWxlVmVjdG9yKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggZDg2YWQxMzY0NmFkMDAxYTZiMDQx
MzIxZWZiMjc5Y2NlOGNjNDk2YS4uNTJlNWE2ZTE5ZWViOTRkNjFhOGJhZDNmMGVlZjAwZGI1Njg2
MDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIFJlZlB0cjxKU0M6OlByb2ZpbGU+IElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhl
CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZEZyb21Gcm9udGVuZCAmJiBtX3BlbmRpbmdDb25z
b2xlUHJvZmlsZVJlY29yZHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGludGVybmFsU3Rv
cCgpOwogCi0gICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKHByb2ZpbGUpOworICAgICAgICAg
ICAgcmV0dXJuIHByb2ZpbGU7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggMDlkZWVlYzkz
MDA5NTU1ZWMzNmViOWM0ZDUwMTI1YTgzMWYyYzQwZS4uODk3YjExYThjY2Y3MDkxZWZiMzYxMzIy
Mjk3OTljZDgxNWY3OWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUmVmPEluc3BlY3Rvck9i
amVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKGRvdWJsZSBz
dGFydFRpbWUKICAgICAgICAgaWYgKHN0YWNrVHJhY2UgJiYgc3RhY2tUcmFjZS0+c2l6ZSgpKQog
ICAgICAgICAgICAgcmVjb3JkLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInN0YWNrVHJhY2UiKSwg
c3RhY2tUcmFjZS0+YnVpbGRJbnNwZWN0b3JBcnJheSgpKTsKICAgICB9Ci0gICAgcmV0dXJuIFdU
Rjo6bW92ZShyZWNvcmQpOworICAgIHJldHVybiByZWNvcmQ7CiB9CiAKIFJlZjxJbnNwZWN0b3JP
YmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25z
dCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKQpAQCAtNjMsMTQgKzYzLDE0IEBA
IFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlRnVuY3Rp
b25DYWxsRGF0YShjb25zdCBTdHJpbmcmCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgic2NyaXB0TmFtZSIpLCBzY3JpcHROYW1lKTsKICAgICBkYXRhLT5zZXRJbnRlZ2VyKEFT
Q0lJTGl0ZXJhbCgic2NyaXB0TGluZSIpLCBzY3JpcHRMaW5lKTsKLSAgICByZXR1cm4gV1RGOjpt
b3ZlKGRhdGEpOworICAgIHJldHVybiBkYXRhOwogfQogCiBSZWY8SW5zcGVjdG9yT2JqZWN0PiBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YShjb25zdCBTdHJp
bmcmIHRpdGxlKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGRhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInRpdGxl
IiksIHRpdGxlKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGRhdGEpOworICAgIHJldHVybiBkYXRh
OwogfQogCiBSZWY8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZVByb2JlU2FtcGxlRGF0YShjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24sIHVu
c2lnbmVkIHNhbXBsZUlkKQpAQCAtNzgsMjEgKzc4LDIxIEBAIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGNvbnN0IFNjcmlw
dEJyCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgZGF0YS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInByb2JlSWQiKSwgYWN0
aW9uLmlkZW50aWZpZXIpOwogICAgIGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJzYW1w
bGVJZCIpLCBzYW1wbGVJZCk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShkYXRhKTsKKyAgICByZXR1
cm4gZGF0YTsKIH0KIAogUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBFdmVudCYgZXZlbnQpCiB7CiAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ZGF0YS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidHlwZSIpLCBldmVudC50eXBlKCkuc3RyaW5n
KCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUoZGF0YSk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAK
IFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJp
Y1RpbWVyRGF0YShpbnQgdGltZXJJZCkKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBkYXRh
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkYXRhLT5zZXRJbnRlZ2VyKEFTQ0lJ
TGl0ZXJhbCgidGltZXJJZCIpLCB0aW1lcklkKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGRhdGEp
OworICAgIHJldHVybiBkYXRhOwogfQogCiBSZWY8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQsIGludCB0aW1l
b3V0LCBib29sIHNpbmdsZVNob3QpCkBAIC0xMDEsNyArMTAxLDcgQEAgUmVmPEluc3BlY3Rvck9i
amVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lckluc3RhbGxEYXRhKGludCB0
aW1lcklkLAogICAgIGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ0aW1lcklkIiksIHRp
bWVySWQpOwogICAgIGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ0aW1lb3V0IiksIHRp
bWVvdXQpOwogICAgIGRhdGEtPnNldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJzaW5nbGVTaG90Iiks
IHNpbmdsZVNob3QpOwotICAgIHJldHVybiBXVEY6Om1vdmUoZGF0YSk7CisgICAgcmV0dXJuIGRh
dGE7CiB9CiAKIFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlRXZhbHVhdGVTY3JpcHREYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgbGluZU51bWJl
cikKQEAgLTEwOSwyMSArMTA5LDIxIEBAIFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKGNvbnN0IFN0cmluCiAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ZGF0YS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidXJsIiksIHVybCk7CiAgICAgZGF0YS0+c2V0
SW50ZWdlcihBU0NJSUxpdGVyYWwoImxpbmVOdW1iZXIiKSwgbGluZU51bWJlcik7Ci0gICAgcmV0
dXJuIFdURjo6bW92ZShkYXRhKTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogUmVmPEluc3BlY3Rv
ck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lU3RhbXBEYXRhKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJtZXNzYWdlIiksIG1lc3NhZ2UpOwotICAgIHJldHVybiBXVEY6Om1vdmUoZGF0YSk7CisgICAg
cmV0dXJuIGRhdGE7CiB9CiAKIFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKQogewogICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCBjYWxsYmFja0lkKTsKLSAgICBy
ZXR1cm4gV1RGOjptb3ZlKGRhdGEpOworICAgIHJldHVybiBkYXRhOwogfQogCiBzdGF0aWMgUmVm
PEluc3BlY3RvckFycmF5PiBjcmVhdGVRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKQEAgLTEz
NywxNCArMTM3LDE0IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZVF1YWQoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKQogICAgIGFycmF5LT5wdXNoRG91YmxlKHF1YWQucDMoKS55KCkp
OwogICAgIGFycmF5LT5wdXNoRG91YmxlKHF1YWQucDQoKS54KCkpOwogICAgIGFycmF5LT5wdXNo
RG91YmxlKHF1YWQucDQoKS55KCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUoYXJyYXkpOworICAg
IHJldHVybiBhcnJheTsKIH0KIAogUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVQYWludERhdGEoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewogICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGRhdGEtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY2xpcCIpLCBjcmVhdGVRdWFkKHF1YWQpKTsK
LSAgICByZXR1cm4gV1RGOjptb3ZlKGRhdGEpOworICAgIHJldHVybiBkYXRhOwogfQogCiB2b2lk
IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6YXBwZW5kTGF5b3V0Um9vdChJbnNwZWN0b3JPYmplY3Qq
IGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMg
UmVmPFByb3RvY29sOjpUaW1lbGluZTo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KGNvbnN0IEpTQzo6UAogICAgICAgICByZXN1bHQtPnNldENoaWxkcmVuKFdURjo6bW92ZShj
aGlsZHJlbikpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUmVmPFByb3RvY29sOjpUaW1lbGluZTo6Q1BVUHJv
ZmlsZT4gYnVpbGRQcm9maWxlSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZSogcHJv
ZmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDQ4MTUwYTBlM2E0
ZjI3ZDg5MDIyNTBjYTNhZGZjMDJmMzU2M2M2ODEuLjc1MDQ5NzI4YTg4YjE5M2ZjNjM4N2Y2Nzk0
MmE2NWI5ZTkwMzU2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MzUyMyw3ICszNTIzLDcgQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUmIG9wZW5l
ckZyYW1lLCBGcmFtZSYgbG9va3VwRnJhbWUsIGNvbnN0IEZyYW1lTG8KICAgICAgICAgICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLmZvY3VzKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
V1RGOjptb3ZlKGZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMzYxNSw3ICszNjE1LDcgQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3co
RnJhbWUmIG9wZW5lckZyYW1lLCBGcmFtZSYgbG9va3VwRnJhbWUsIGNvbnN0IEZyYW1lTG8KICAg
ICBwYWdlLT5jaHJvbWUoKS5zaG93KCk7CiAKICAgICBjcmVhdGVkID0gdHJ1ZTsKLSAgICByZXR1
cm4gV1RGOjptb3ZlKGZyYW1lKTsKKyAgICByZXR1cm4gZnJhbWU7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApp
bmRleCA3YzEwZGNmMDA1ZjhjNTNiNDI2ZTE5ODA0ZjMyY2YwY2Y1ZGU2YmI1Li42NmY0MzFkMTFi
ZmRhZGRiNGNkYjhjZTliYjY5NTQ5ZGExMmQ1MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgTmF2aWdhdGlvbkFjdGlv
biBOYXZpZ2F0aW9uQWN0aW9uOjpjb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ko
U2hvdWxkT3AKIHsKICAgICBOYXZpZ2F0aW9uQWN0aW9uIHJlc3VsdCgqdGhpcyk7CiAgICAgcmVz
dWx0Lm1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxZTljNzA4NzJiODBh
MmI3MjE3NTEyYTgyYzA1ODYwZDY3MzM4MWNlLi41ZjFlNzMyMDIzZjVlZDJhYTkxZTQ5ZWMyYjU3
Zjc4MGU3YmY0OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0yMTI4LDcgKzIx
MjgsNyBAQCBSZWZQdHI8RnJhbWU+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogICAgIG5ld0ZyYW1lLT5wYWdlKCktPnNl
dE9wZW5lZEJ5RE9NKCk7CiAKICAgICBpZiAobmV3RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShuZXdGcmFtZSk7CisgICAgICAgIHJldHVybiBuZXdG
cmFtZTsKIAogICAgIGlmIChwcmVwYXJlRGlhbG9nRnVuY3Rpb24pCiAgICAgICAgIHByZXBhcmVE
aWFsb2dGdW5jdGlvbigqbmV3RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKTsKQEAgLTIx
NDYsNyArMjE0Niw3IEBAIFJlZlB0cjxGcmFtZT4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgaWYgKCFuZXdGcmFt
ZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXVEY6Om1v
dmUobmV3RnJhbWUpOworICAgIHJldHVybiBuZXdGcmFtZTsKIH0KIAogUGFzc1JlZlB0cjxET01X
aW5kb3c+IERPTVdpbmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRv
bWljU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0K
aW5kZXggOTZmNTBkZjA3NDAxODQ2NDBhOGYzZWE2MDQyNDU5MmY2YTVhOTZhMC4uNDE5ZDdmZDAy
NGExZWU1NjVmMDIzYmYyMTliNGM3NzkwNzNjZTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQpAQCAtNDAzLDcgKzQwMyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFu
ZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwgY29ubmVjdGlv
biwgbnNSZXNwb25zZSwgZGVsZWdhdGUpKTsKICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVh
dGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92
ZShxdWlja0xvb2tIYW5kbGUpOworICAgIHJldHVybiBxdWlja0xvb2tIYW5kbGU7CiB9CiAKICNp
ZiBVU0UoQ0ZORVRXT1JLKQpAQCAtNDE3LDcgKzQxNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxRdWlj
a0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsCiAgICAgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tXZWJR
dWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0
ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJM
XSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwogICAgIGhhbmRsZS0+Y2xpZW50KCktPmRp
ZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsKLSAgICByZXR1cm4gV1RG
Ojptb3ZlKHF1aWNrTG9va0hhbmRsZSk7CisgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKIH0K
IAogQ0ZVUkxSZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2UoKQpAQCAtNDM5
LDcgKzQzOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hh
bmRsZTo6Y3JlYXRlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFF1aWNrTG9va0hhbmRsZT4gcXVpY2tMb29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2xv
YWRlci5vcmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkg
VVJMXSwgbmlsLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIGRlbGVnYXRlLmdldCgpKSk7CiAg
ICAgW2RlbGVnYXRlIHNldFF1aWNrTG9va0hhbmRsZTpxdWlja0xvb2tIYW5kbGUuZ2V0KCldOwog
ICAgIGxvYWRlci5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7Ci0g
ICAgcmV0dXJuIFdURjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOworICAgIHJldHVybiBxdWlja0xv
b2tIYW5kbGU7CiB9CiAKIE5TVVJMUmVzcG9uc2UgKlF1aWNrTG9va0hhbmRsZTo6bnNSZXNwb25z
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDM3NTNhM2VkNTMyMzVm
YTk4NjU0Zjg4YTk1MmJhMmE0OTFiZjA1NC4uNDMzNDRjOGEzNGNlOWM4Njk5NDM0MjVkODEzOTM3
MGY1MzBmNjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTgwMSw3
ICsxODAxLDcgQEAgUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0
b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBSZWZQdHI8RE9NV2luZG93PiBmcm9u
dGVuZFdpbmRvdyA9IHdpbmRvdy0+b3Blbih1cmwsICIiLCAiIiwgKndpbmRvdywgKndpbmRvdyk7
CiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU3R1
YkZyb250ZW5kPihpbnNwZWN0ZWRQYWdlLCBmcm9udGVuZFdpbmRvdy5jb3B5UmVmKCkpOwogCi0g
ICAgcmV0dXJuIFdURjo6bW92ZShmcm9udGVuZFdpbmRvdyk7CisgICAgcmV0dXJuIGZyb250ZW5k
V2luZG93OwogfQogCiB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5k
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRl
eCA5NjRhMGFhYTQ3YjM1NjI4MDkwNDZkNTc2OWYzMTU2M2Q3MTE4YzlmLi4zNzE5NDY5ZWZlOTY5
MDcyNjE2MzBlOTAwZmJiMWEwMmQxOTk0ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QoKQogewogICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VS
ZXF1ZXN0PihtX3VybCk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhvZCgiR0VUIik7Ci0gICAg
cmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKKyAgICByZXR1cm4gcmVxdWVzdDsKIH0KICAgICAK
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKaW5kZXggZmRmYjhhZWQ4NmE3MGI3NzgwOTk5YTIz
NTc0Mjk0MzFhZWEwOWIwNy4uMzFiOTkwNmRiMTIyMmQ0ZmFkY2RjMjZjY2Q1ZTdlYTQyZDI2YTEx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgUmVmUHRyPFhQYXRoUmVzdWx0PiBYUGF0aEV4cHJlc3Npb246OmV2YWx1YXRlKE5vZGUqIGNv
bnRleHROb2RlLCB1bnNpZ25lZCBzaG9ydAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NTkyYWExMTU2MWVlMDhhZmU1ZDc0Y2Y1NWZkNzkzZjRiNzIwNmI5NC4uODNkZDNmMTBjZDY1Yjg0
ZTAwMTJhOWI0ZmVhYTY3YjIzMDNkODlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cgogICAgIHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UgPSBjdXJyZW50RGF0YWJhc2VVc2Fn
ZTsKICAgICByZWNvcmQtPmV4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOwogICAgIHJlY29y
ZC0+cmVwbHkgPSByZXBseTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlY29yZCk7CisgICAgcmV0
dXJuIHJlY29yZDsKIH0KIAogdm9pZCBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjphZGQo
c3RkOjp1bmlxdWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gcmVj
b3JkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267920</attachid>
            <date>2015-12-25 04:37:19 -0800</date>
            <delta_ts>2015-12-25 08:09:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152557-20151225043643.patch</filename>
            <type>text/plain</type>
            <size>55345</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjAwNmRiOWZkNzI4Mjc3Y2MzYThiZjU1NTY3NDk3YTFjNmU3M2Q4Li4zN2ZlNWM4ZTFmYzgwOGZi
OTVmNTZhZjNkYzNhY2Q4NmQzMGE5NjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNS0xMi0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcCBtb3ZpbmcgbG9jYWwgb2JqZWN0cyBpbiByZXR1cm4gc3RhdGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTU3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbGluZyBX
VEY6Om1vdmUoKSBvbiBhIGxvY2FsIG9iamVjdCBpbiBhIHJldHVybiBzdGF0ZW1lbnQgcHJldmVu
dHMgdGhlIGNvbXBpbGVyIGZyb20gYXBwbHlpbmcgdGhlIHJldHVybiB2YWx1ZSBvcHRpbWl6YXRp
b24uCisKKyAgICAgICAgQ2xhbmcgY2FuIHdhcm4gYWJvdXQgdGhlc2UgbWlzdGFrZXMgd2l0aCAt
V3Blc3NpbWl6aW5nLW1vdmUsIGFsdGhvdWdoIG9ubHkgd2hlbiBXVEY6Om1vdmUoKSBpcyBjYWxs
ZWQgZGlyZWN0bHkuCisgICAgICAgIEkgZm91bmQgdGhlc2UgaXNzdWVzIGJ5IHRlbXBvcmFyaWx5
IHJlcGxhY2luZyBXVEY6Om1vdmUgd2l0aCBXVEY6Om1vdmUgYW5kIHJlY29tcGlsaW5nLgorCisg
ICAgICAgICogZnRsL0ZUTFVud2luZEluZm8uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnBhcnNl
VW53aW5kSW5mbyk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRJbnNwZWN0b3JPYmplY3QpOgorICAgICAg
ICAqIGppdC9DYWxsRnJhbWVTaHVmZmxlci5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVm
Zmxlcjo6c25hcHNob3QpOgorICAgICAgICAqIHJlcGxheS9FbmNvZGVkVmFsdWUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpUeXBlU2V0OjphbGxTdHJ1
Y3R1cmVSZXByZXNlbnRhdGlvbnMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6aW5z
cGVjdG9yUmVwcmVzZW50YXRpb24pOgorCiAyMDE1LTEyLTIzICBBbmRyZWFzIEtsaW5nICA8YWts
aW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBqc2MgQ0xJIHRvb2wgY3Jhc2hlcyBvbiBFT0YuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDIwMGQzNTRhMzc2Zjc3NjRjNzJlOTllMTY0MWUzY2I3MGNhNzg1MjAuLjE5NTcyYmNhOGU0
MzYzNWJmODgzNjZjZGY2ZWViNDQ0NzZhYWI2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUt
MTItMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgbW92
aW5nIGxvY2FsIG9iamVjdHMgaW4gcmV0dXJuIHN0YXRlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjU1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOiBBZGRl
ZCBhIEZJWE1FIGFib3V0IGhvdyB1c2luZyBXVEY6Om1vdmUoKSBwcmV2ZW50cyBzZXZlcmFsIENs
YW5nIGRpYWdub3N0aWNzIGZyb20gZW1pdHRpbmcgdXNlZnVsIHdhcm5pbmdzLgorCiAyMDE1LTEy
LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRlRMIEIzIHNo
b3VsZCBiZSBhYmxlIHRvIHJ1biByaWNoYXJkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZjNWFlNzA2MWQxODFh
MTU0NDNlMjlmMzFlMjZiMjgxY2ZiNDE0NDkuLjk4YjIyNDIzYTlkZDk2ZjQ4YzdlNzliZTgyYjQ3
YjhmMjgyNDliNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTUtMTItMjUgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgbW92aW5nIGxvY2Fs
IG9iamVjdHMgaW4gcmV0dXJuIHN0YXRlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbGxpbmcgc3RkOjptb3ZlKCkgb24gYSBsb2NhbCBvYmpl
Y3QgaW4gYSByZXR1cm4gc3RhdGVtZW50IHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tIGFwcGx5
aW5nIHRoZSByZXR1cm4gdmFsdWUgb3B0aW1pemF0aW9uLgorCisgICAgICAgIENsYW5nIGNhbiB3
YXJuIGFib3V0IHRoZXNlIG1pc3Rha2VzIHdpdGggLVdwZXNzaW1pemluZy1tb3ZlLCBhbHRob3Vn
aCBvbmx5IHdoZW4gc3RkOjptb3ZlKCkgaXMgY2FsbGVkIGRpcmVjdGx5LgorICAgICAgICBJIGZv
dW5kIHRoZXNlIGlzc3VlcyBieSB0ZW1wb3JhcmlseSByZXBsYWNpbmcgV1RGOjptb3ZlIHdpdGgg
c3RkOjptb3ZlIGFuZCByZWNvbXBpbGluZy4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlm
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0
ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmRlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rp
b25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
VHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5kZXhSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdFB1dE9yQWRkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6dGFrZU5leHRSdW5uYWJsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlSW5mbzo6b2JqZWN0U3RvcmVOYW1lcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRh
dGFiYXNlU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0
YWJhc2VVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCVHJhbnNhY3Rpb25JbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
SW5mbzo6dmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbklu
Zm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
UHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlclZhbHVlKToK
KyAgICAgICAgKiBkb20vTm9kZU9yU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckhlYWRl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVp
bGRBcnJheUZvclF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVn
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZv
ckhpZ2hsaWdodGVkTm9kZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWEhSVGV4dERlY29kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE1lZGlh
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9y
Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclNlbGVjdG9y
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFy
cmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BG
cm9tQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVy
aWNSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVGdW5jdGlvbkNhbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlRXZlbnREaXNwYXRjaERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGlt
ZXJJbnN0YWxsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVTdGFtcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVBbmltYXRpb25GcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZVBhaW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEluc3BlY3Rv
ck9iamVjdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6Y29weVdpdGhTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tM
b29rSGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAg
KiB4bWwvWFBhdGhFeHByZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoRXhwcmVz
c2lvbjo6ZXZhbHVhdGUpOgorCiAyMDE1LTEyLTI0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogeDIgPj0geDEgaW4gV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hTaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFlZmU5OTAz
MzZhZTlmMDFmMWU5YjQwYzA5ZmYwNmExNDFkNzI2MS4uNmExZDI4MTkxMDQ4YmQzYzM1ZWJjMTg2
YmEwNmUzYzY5ZWFlNTVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTEyLTI1
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIG1vdmluZyBs
b2NhbCBvYmplY3RzIGluIHJldHVybiBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI1NTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsaW5nIHN0ZDo6bW92ZSgpIG9uIGEgbG9jYWwg
b2JqZWN0IGluIGEgcmV0dXJuIHN0YXRlbWVudCBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbSBh
cHBseWluZyB0aGUgcmV0dXJuIHZhbHVlIG9wdGltaXphdGlvbi4KKworICAgICAgICBDbGFuZyBj
YW4gd2FybiBhYm91dCB0aGVzZSBtaXN0YWtlcyB3aXRoIC1XcGVzc2ltaXppbmctbW92ZSwgYWx0
aG91Z2ggb25seSB3aGVuIHN0ZDo6bW92ZSgpIGlzIGNhbGxlZCBkaXJlY3RseS4KKyAgICAgICAg
SSBmb3VuZCB0aGVzZSBpc3N1ZXMgYnkgdGVtcG9yYXJpbHkgcmVwbGFjaW5nIFdURjo6bW92ZSB3
aXRoIHN0ZDo6bW92ZSBhbmQgcmVjb21waWxpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVj
b3Jkczo6Y3JlYXRlUmVjb3JkKToKKwogMjAxNS0xMi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgImNvbnN0cmFpbmVkQmV0d2VlbiIgaW4g
bW9yZSBwbGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53
aW5kSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uY3Bw
CmluZGV4IDk5MWYwZGY0YWUwODk5MGU5OWUxYjQ5MGI3NGMyNDExYzQyMTMwYzUuLjQyM2E5OWQx
YzQ2ZWRhMjlhNmZmN2VlMzI2Mjg0ODg4NDdlYjJhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExVbndpbmRJbmZvLmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBwYXJzZVVud2luZEluZm8odm9pZCogc2VjdGlv
biwgc2l6ZV90IHNpemUKIAogI2VuZGlmCiAgICAgcmVnaXN0ZXJPZmZzZXRzLT5zb3J0KCk7Ci0g
ICAgcmV0dXJuIFdURjo6bW92ZShyZWdpc3Rlck9mZnNldHMpOworICAgIHJldHVybiByZWdpc3Rl
ck9mZnNldHM7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCA0OWIw
NzE5ZjVhNGE3MWI5NWFiZDJlYzBjNzVhOGU3NTcxYTE5NGMyLi42NWVjOWRlMjU2YWNlY2U3NGE5
NDM4YWEyMjM3NDk3OTljMzBiMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IFNjcmlwdENhbGxTdGFjazo6
YnVpbGRJbnNwZWN0b3JBcnIKICAgICBhdXRvIGZyYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OlN0YWNrVHJhY2U6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1lcy0+YWRkSXRlbShtX2ZyYW1l
cy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGZy
YW1lcyk7CisgICAgcmV0dXJuIGZyYW1lczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGI3MjA3
OGNhN2FhODNmZjY5ZmE0NmQyZGQ2MDZmOGNmNmEyNDM5NmUuLjBiMWNmNTk4YjJjNjIwMzlhNmJh
ZGM4OTI1ZTQ0OTI2YmE3ZTMzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6VGlt
ZWxpbmU6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlAK
ICAgICAgICAgcmVzdWx0LT5zZXRDaGlsZHJlbihXVEY6Om1vdmUoY2hpbGRyZW4pKTsKICAgICB9
CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogc3RhdGljIFJlZjxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGU+IGJ1aWxkUHJvZmls
ZUluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGUqIHByb2ZpbGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmgKaW5kZXggYzk5M2U4Yzc1Mjkx
YmE2N2RjYzMzYTI4MjFjYjdjM2I1ZDU4YzJmNC4uNDVhNzczMDk5ZDJhMjdjZmY3YWI0NTg3ZDdm
MTQ2NWUyMWViNDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxs
RnJhbWVTaHVmZmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1l
U2h1ZmZsZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gV1RGOjptb3ZlKGRhdGEpOworICAgICAgICByZXR1cm4gZGF0YTsKICAgICB9CiAKICAgICAv
LyBBc2sgdGhlIHNodWZmbGVyIHRvIHB1dCB0aGUgY2FsbGVlIGludG8gc29tZSByZWdpc3RlcnMg
b25jZSB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2Rl
ZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCmlu
ZGV4IDg2NTliNGY1MGIxNWJmMzU1NDQxNDRiZmFmMjVkMDg0YjA0NDBjYTYuLjBkMTViYWJjNzYy
ZWVmYzI1NDliOWVkMDRjNjQ3NzU0NDE0ODI1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9FbmNvZGVkVmFsdWUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHN0cnVjdCBFbmNvZGlu
Z1RyYWl0czxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4+IHsKICAg
ICAgICAgZm9yIChjb25zdCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGUm
IHZhbHVlIDogdmVjdG9yT2ZWYWx1ZXMpCiAgICAgICAgICAgICBlbmNvZGVkVmVjdG9yLmFwcGVu
ZDxUPih2YWx1ZSk7CiAKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShlbmNvZGVkVmVjdG9yKTsK
KyAgICAgICAgcmV0dXJuIGVuY29kZWRWZWN0b3I7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wg
ZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmVjdG9yLCBEZWNvZGVkVHlwZSYgZGVj
b2RlZFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRl
eCBhNDM2Y2RhMTMxZDVhN2NlNzVmNjg0ZGU4OWNjMDcwOTAyYjg4NjUwLi5hMDJlMmE2ODYxMzgz
MjhhMzE4N2Q5Y2JlZThlOTgwNzllYWFlNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlw
dGlvCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgp
OyBpKyspCiAgICAgICAgIGRlc2NyaXB0aW9uLT5hZGRJdGVtKG1fc3RydWN0dXJlSGlzdG9yeS5h
dChpKS0+aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3Zl
KGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlU2V0PiBUeXBlU2V0OjppbnNwZWN0b3JUeXBlU2V0
KCkgY29uc3QKQEAgLTUyMyw3ICs1MjMsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IFN0cnVjdHVyZVNoYXBlOjppbnNwZWN0bwogICAg
ICAgICBjdXJyZW50U2hhcGUgPSBjdXJyZW50U2hhcGUtPm1fcHJvdG87CiAgICAgfQogCi0gICAg
cmV0dXJuIFdURjo6bW92ZShiYXNlKTsKKyAgICByZXR1cm4gYmFzZTsKIH0KIAogYm9vbCBTdHJ1
Y3R1cmVTaGFwZTo6aGFzU2FtZVByb3RvdHlwZUNoYWluKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hh
cGU+IHBycE90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCA4ZjJmMzMxYWEwODQ2ODI2MzZj
Nzk1NDFiMzg2YjM2YTRhOGM5N2VmLi45MmJhNDMwYTA5NzIyYTUwNGU5NWQ0MjljNTMxNWU1Yzkz
NWNlNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtMTExLDYgKzExMSw4IEBAIGlubGluZSBi
b29sIGlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5KFR5cGUqKQogCiBuYW1lc3BhY2UgV1RGIHsK
IAorLy8gRklYTUU6IFVzaW5nIHRoaXMgZnVuY3Rpb24gcHJldmVudHMgQ2xhbmcncyBtb3ZlIGRp
YWdub3N0aWNzICgtV3Blc3NpbWl6aW5nLW1vdmUsIC1XcmVkdW5kYW50LW1vdmUsIC1Xc2VsZi1t
b3ZlKSBmcm9tCisvLyBmaW5kaW5nIG1pc3Rha2VzLCBzaW5jZSB0aGVzZSBkaWFnbm9zdGljcyBv
bmx5IGV2YWx1YXRlIGNhbGxzIHRvIHN0ZDo6bW92ZSgpLgogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYg
bW92ZShUJiYgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggOGIzNGUxMWE5Y2Q0NWI1MTBlYzQyN2NiZTk2
NjM5OGYyNWQzZGZmYS4uNTk1YWIxYjRjZjQ1ZTgxMDFiZjVmNzlhNzYyMmMyZGY2ZGEyNjQ3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlh
S2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAg
c2Vzc2lvbi0+Z2VuZXJhdGVLZXlSZXF1ZXN0KHR5cGUsIGluaXREYXRhKTsKIAogICAgIC8vIDYu
IFJldHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgotICAgIHJldHVybiBXVEY6Om1v
dmUoc2Vzc2lvbik7CisgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKIGJvb2wgTWVkaWFLZXlzOjpp
c1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRleCA5NGI3Y2FmMjk2OTUwYWQzODE4NDY0YmM5
ZGY1OGZmYmIwOWI4MmQyLi5kZDk0ZTFmNTE1ODUxMTdiZmUyNjBmZGRjZDRkMDI1NmFkZmExMDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBp
ZGVudGlmaWVyLm1fb3BlbmluZ09yaWdpbiA9IG1fb3BlbmluZ09yaWdpbi5pc29sYXRlZENvcHko
KTsKICAgICBpZGVudGlmaWVyLm1fbWFpbkZyYW1lT3JpZ2luID0gbV9tYWluRnJhbWVPcmlnaW4u
aXNvbGF0ZWRDb3B5KCk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGlkZW50aWZpZXIpOworICAg
IHJldHVybiBpZGVudGlmaWVyOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAppbmRleCAxNDJmMjQ4YTNhYWJl
MzA2MTc3ZDUxMjEwMDhmZWRlODZjNzc5MDBkLi5mZDM2NTE5N2U2ZGZkYTNlZDNmZTg4NjQ5ZGE3
MzU1NjQ3MTgyNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlEYXRhLmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIElEQktleURhdGEgSURCS2V5RGF0YTo6
ZGVsZXRlZFZhbHVlKCkKICAgICBJREJLZXlEYXRhIHJlc3VsdDsKICAgICByZXN1bHQubV9pc051
bGwgPSBmYWxzZTsKICAgICByZXN1bHQubV9pc0RlbGV0ZWRWYWx1ZSA9IHRydWU7Ci0gICAgcmV0
dXJuIFdURjo6bW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgSURC
S2V5RGF0YTo6b3BlcmF0b3I8KGNvbnN0IElEQktleURhdGEmIHJocykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUlt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFi
YXNlSW1wbC5jcHAKaW5kZXggMDhiNTBkYmRiYzM4NzQyYzc0ODEwNmRiNDgzYjZlOTI0YzRmMTc2
OC4uM2UyZGNhNDM5NjFjMDU0N2I2OGUxMjkzMmZkM2UxM2NjYzc5ZjIwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFi
YXNlSW1wbC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRh
dGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBt
X2luZm8ub2JqZWN0U3RvcmVOYW1lcygpKQogICAgICAgICBvYmplY3RTdG9yZU5hbWVzLT5hcHBl
bmQobmFtZSk7CiAgICAgb2JqZWN0U3RvcmVOYW1lcy0+c29ydCgpOwotICAgIHJldHVybiBXVEY6
Om1vdmUob2JqZWN0U3RvcmVOYW1lcyk7CisgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXM7CiB9
CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmKQpAQCAtMjY2LDcgKzI2Niw3IEBAIFJlZjxJREJUcmFuc2FjdGlvbj4gSURC
RGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0
CiAKICAgICBtX2FjdGl2ZVRyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24tPmluZm8oKS5pZGVu
dGlmaWVyKCksICZ0cmFuc2FjdGlvbi5nZXQoKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHRy
YW5zYWN0aW9uKTsKKyAgICByZXR1cm4gdHJhbnNhY3Rpb247CiB9CiAKIHZvaWQgSURCRGF0YWJh
c2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5z
YWN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCAyOGY0YmQ5NTZkYjU5NThjNzk0OTRkOWVkNjJh
MDY1M2Q5NTdhNGFiLi40MjE3Zjc3ZWZkYTY3YmM4MmU1MzMwZjE3MjY4ZDgyMTQ1ZGEyNDY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJh
bnNhY3Rpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNDQ0LDcgKzQ0NCw3IEBAIFJlZjxJREJP
YmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYKICAgICBhdXRvIG9wZXJhdGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKCp0aGlzLCAmSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2
ZXIsICZJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlciwgaW5mbyk7CiAg
ICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3ZlKG9wZXJhdGlvbikpOwogCi0gICAgcmV0dXJu
IFdURjo6bW92ZShvYmplY3RTdG9yZSk7CisgICAgcmV0dXJuIG9iamVjdFN0b3JlOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKQEAg
LTQ3Myw3ICs0NzMsNyBAQCBSZWY8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRl
eChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQgogICAgIGF1dG8gb3BlcmF0
aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6
ZGlkQ3JlYXRlSW5kZXhPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2Vy
dmVyLCBpbmZvKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7
CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGluZGV4KTsKKyAgICByZXR1cm4gaW5kZXg7CiB9CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVy
YXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpAQCAtNTI5LDcgKzUy
OSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250CiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0
aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9u
U2VydmVyLCBjdXJzb3ItPmluZm8oKSk7CiAgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3Zl
KG9wZXJhdGlvbikpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKKyAgICByZXR1
cm4gcmVxdWVzdDsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVy
KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGlu
Zm8pCkBAIC01ODQsNyArNTg0LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICBhdXRv
IG9wZXJhdGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0Lmdl
dCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyLCAmSURCVHJhbnNhY3Rp
b246OmdldFJlY29yZE9uU2VydmVyLCBrZXlSYW5nZURhdGEpOwogICAgIHNjaGVkdWxlT3BlcmF0
aW9uKFdURjo6bW92ZShvcGVyYXRpb24pKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVz
dCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldFZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElE
QkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKQEAgLTYxMSw3ICs2
MTEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29y
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZQogICAgIGF1dG8gb3BlcmF0aW9uID0gY3Jl
YXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2Fj
dGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25T
ZXJ2ZXIsIHJhbmdlKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9u
KSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOworICAgIHJldHVybiByZXF1ZXN0
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlcihUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlKQpA
QCAtNzMyLDcgKzczMiw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dENsZWFyT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYKICAgICBhdXRvIG9wZXJh
dGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAm
SURCVHJhbnNhY3Rpb246OmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlciwgJklEQlRyYW5zYWN0
aW9uOjpjbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAg
ICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3ZlKG9wZXJhdGlvbikpOwogCi0gICAgcmV0dXJu
IFdURjo6bW92ZShyZXF1ZXN0KTsKKyAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogdm9pZCBJREJU
cmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXRpb24sIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIpCkBAIC03
NjMsNyArNzYzLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0
T3JBZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwKICAgICBhdXRvIG9wZXJhdGlv
biA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURC
VHJhbnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6cHV0T3JB
ZGRPblNlcnZlciwga2V5LCAmdmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwogICAgIHNjaGVkdWxlT3Bl
cmF0aW9uKFdURjo6bW92ZShvcGVyYXRpb24pKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVx
dWVzdCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1
dE9yQWRkT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgUmVmUHRyPElE
QktleT4ga2V5LCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUmIG92ZXJ3cml0ZU1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBhMDBhMGUyMThmNTAxNGY3YTExNjk2ZjZmODA1MTVhNDEx
ZTQzMjdmLi4wN2FkNTRhYmYwYzc1MTg2NWZlZTBlNjhhMGQwNjI2ODcyNjYxMTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTEwODUsMTMgKzEwODUsMTMgQEAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5h
YmxlVHJhbnNhY3QKIAogICAgIGhhZERlZmVycmVkVHJhbnNhY3Rpb25zID0gIWRlZmVycmVkVHJh
bnNhY3Rpb25zLmlzRW1wdHkoKTsKICAgICBpZiAoIWhhZERlZmVycmVkVHJhbnNhY3Rpb25zKQot
ICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGN1cnJlbnRUcmFuc2FjdGlvbik7CisgICAgICAgIHJl
dHVybiBjdXJyZW50VHJhbnNhY3Rpb247CiAKICAgICAvLyBQcmVwZW5kIHRoZSBkZWZlcnJlZCB0
cmFuc2FjdGlvbnMgYmFjayBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkZXF1ZSBmb3IgZnV0dXJl
IHNjaGVkdWxpbmcgcGFzc2VzLgogICAgIHdoaWxlICghZGVmZXJyZWRUcmFuc2FjdGlvbnMuaXNF
bXB0eSgpKQogICAgICAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbnMucHJlcGVuZChkZWZlcnJlZFRy
YW5zYWN0aW9ucy50YWtlTGFzdCgpKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUoY3VycmVudFRy
YW5zYWN0aW9uKTsKKyAgICByZXR1cm4gY3VycmVudFRyYW5zYWN0aW9uOwogfQogCiB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUlu
Zm8uY3BwCmluZGV4IGFlNDAyMmJhOWMwOTc4ZjkwMGQ5YzY2MjQzMjBkNTE2MjY5NDRjMTkuLjQ0
YWE0N2U2ZDg4NDQzNWE0MDg4OWI3Nzk4ZjY1Y2Y3YzFkMjA4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUlu
Zm8uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIElEQkRhdGFiYXNlSW5mbyBJREJEYXRhYmFzZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgaW5mby5tX25hbWUgPSBtX25hbWUuaXNvbGF0ZWRD
b3B5KCk7CiAgICAgaW5mby5tX3ZlcnNpb24gPSBtX3ZlcnNpb247CiAKLSAgICByZXR1cm4gV1RG
Ojptb3ZlKGluZm8pOworICAgIHJldHVybiBpbmZvOwogfQogCiBib29sIElEQkRhdGFiYXNlSW5m
bzo6aGFzT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApAQCAtMTIzLDcgKzEy
Myw3IEBAIFZlY3RvcjxTdHJpbmc+IElEQkRhdGFiYXNlSW5mbzo6b2JqZWN0U3RvcmVOYW1lcygp
IGNvbnN0CiAgICAgZm9yIChhdXRvJiBvYmplY3RTdG9yZSA6IG1fb2JqZWN0U3RvcmVNYXAudmFs
dWVzKCkpCiAgICAgICAgIG5hbWVzLnVuY2hlY2tlZEFwcGVuZChvYmplY3RTdG9yZS5uYW1lKCkp
OwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShuYW1lcyk7CisgICAgcmV0dXJuIG5hbWVzOwogfQog
CiB2b2lkIElEQkRhdGFiYXNlSW5mbzo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBv
YmplY3RTdG9yZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKaW5kZXggMzFhZWY4ZmM0MDgzZmNlYWNk
ODI4NTEyMGVkZjZkNTc0NzJiMjA1Mi4uMzAyZWVlNzlhYzRiOTAzODViNWQ4ZjAzNjZmOTFlMzUy
MGRjZmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcApAQCAtNjcsNyArNjcsNyBAQCBJREJSZXN1bHRE
YXRhIElEQlJlc3VsdERhdGE6OmVycm9yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZQogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KHJlcXVlc3RJZGVudGlmaWVy
KTsKICAgICByZXN1bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6RXJyb3I7CiAgICAgcmVzdWx0
Lm1fZXJyb3IgPSBlcnJvcjsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJh
c2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIs
IElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAt
NzYsNyArNzYsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1
Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogICAgIHJlc3VsdC5tX3R5cGUg
PSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0YWJhc2VTdWNjZXNzOwogICAgIHJlc3VsdC5tX2RhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKICAgICBy
ZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
Y29ubmVjdGlvbi5kYXRhYmFzZSgpLmluZm8oKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1
bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIApAQCAtODcsNyArODcsNyBAQCBJREJSZXN1
bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIgPSB0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5pZGVudGlmaWVyKCk7CiAgICAg
cmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkuaW5mbygpKTsKICAg
ICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0
aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3Vs
dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRh
OjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5m
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNh
Y3Rpb25JbmZvLmNwcAppbmRleCA3Yjg5ZWQ3NWQ3Mjk4Yjc1MTM1MGIzM2UxMmQ0OWRkOTE0NWFm
ZWI4Li5mZTVhZWU4Y2E1YmQ4ZDA2NTk2MTI5YWMxZThkYjRhMmVjYzhiZGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25J
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcApAQCAtNTMsNyArNTMsNyBAQCBJREJUcmFuc2FjdGlvbkluZm8g
SURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlNlcnZlcjo6SURCQ29u
bmVjdAogICAgIHJlc3VsdC5tX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwogICAgIHJlc3VsdC5t
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0
aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCkBAIC03OSw3ICs3OSw3IEBA
IElEQlRyYW5zYWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiAgICAgaWYgKG1fb3JpZ2luYWxEYXRhYmFzZUluZm8pCiAgICAgICAgIHJlc3VsdC5tX29y
aWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpt
X29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcAppbmRleCAxZWY0MDU0YWNhNmQ0ODZiMTZiOGNhZWQ3ZGU5ZThhNWZkYzAwMzA5
Li41MDZlOTIxY2MyM2I1NmFiMzBjZWFhZGU2YTVhNGI1Y2Y0NWRjMmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVy
PiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSgpCiB7CiAgICAgUmVmPEluUHJvY2Vzc0lEQlNl
cnZlcj4gc2VydmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2ZXIpOwogICAgIHNl
cnZlci0+bV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbihzZXJ2ZXItPmNvbm5lY3Rpb25Ub0Ns
aWVudCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHNlcnZlcik7CisgICAgcmV0dXJuIHNlcnZl
cjsKIH0KIAogSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4
dC5jcHAKaW5kZXggZTVlZDk0ODQ4MTk1YTE5NzUyZjJmMTQ2MjllMDEzOTI0ZWI2N2Y5MS4uOGE2
MWFlYWU0MTU1OTA3N2Q5ZDRkMjUzNmQ4YTYxNDZhNzA5NTVmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBA
IC01MSw3ICs1MSw3IEBAIFJlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQXVkaW9D
b250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYKIAogICAgIFJlZlB0cjxPZmZs
aW5lQXVkaW9Db250ZXh0PiBhdWRpb0NvbnRleHQoYWRvcHRSZWYobmV3IE9mZmxpbmVBdWRpb0Nv
bnRleHQoZG9jdW1lbnQsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVS
YXRlKSkpOwogICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJu
IFdURjo6bW92ZShhdWRpb0NvbnRleHQpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CiAK
IE9mZmxpbmVBdWRpb0NvbnRleHQ6Ok9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggNzliY2NjNGIwMDJlZTUzZjgzYmZhOWM2
ZmMwNTNhZTYwODFhY2IyOC4uMWZlOWYxYWVjNjk2M2ZlYTM5NjYyYTk3ZTBiYmJmMTQ5YWIxYTc5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcApAQCAtNjY3LDcgKzY2Nyw3IEBAIFJlZlB0cjxPcmlnaW5Mb2NrPiBE
YXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAg
ICBBU1NFUlQobG9jayk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGxvY2s7CiAK
LSAgICByZXR1cm4gV1RGOjptb3ZlKGxvY2spOworICAgIHJldHVybiBsb2NrOwogfQogCiB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luTG9ja0ZvcihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAppbmRleCAwZjQ3NjgxNWM1NDFiMGMxMzkzY2M4MTIxNTYwNTY2NzY4ZjNhNmNlLi45NDQ3MGNh
Zjc3ZWEyZmYyZjFkZjg1MWVhYTliYWE1NGU0MDlmMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIFJl
ZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBXVEY6Om1vdmUod2ViU29ja2V0KTsKKyAgICByZXR1cm4gd2ViU29j
a2V0OwogfQogCiBSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAppbmRleCBkZGI4MDIzZmFiNjk3ZmQyODNhMTcwNzEwNTNlYTNlM2I2ZDY5YjI5
Li44MjM2N2ZlNzFlNTVmNDgwOTdjOGU5YTAzYWY2MzQ2MTg2MTAyYjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTk3Niw3ICs5NzYsNyBAQCBORVZFUl9J
TkxJTkUgUmVmPFN0cmluZ0ltcGw+IENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1
ZShjb25zdCBjaGFyKiBzdQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdWZmaXhMZW5n
dGg7ICsraSkKICAgICAgICAgYnVmZmVyW2xlbmd0aCArIGldID0gc3RhdGljX2Nhc3Q8TENoYXI+
KHN1ZmZpeFtpXSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHN0cmluZyk7CisgICAgcmV0dXJu
IHN0cmluZzsKIH0KIAogdGVtcGxhdGUgPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVPclN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZU9yU3RyaW5nLmNwcAppbmRleCBhOGE4ZWY3ZTExMGRiOTU0NWRjYjhlODA5MTMx
Y2RkYzk4MTk5NjgwLi5kNWYyNWU0MmFhNjFlNDgxYjFmNDc1ZmIyMTVjM2EwM2YxNjhiZjYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZU9yU3RyaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZU9yU3RyaW5nLmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8
Tm9kZT4gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoTm9kZSYgY29udGV4dCwgVmVjdG9y
PE5vZGVPclN0cmluZz4mJgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVybiBXVEY6
Om1vdmUobm9kZVRvUmV0dXJuKTsKKyAgICByZXR1cm4gbm9kZVRvUmV0dXJuOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDgwOTg5MTJmODJj
ZmI1YzRlYjQyYjBiNjVkZDUzZGFiNDdhNzMwNDQuLmNiZDlhN2FjYTcyYmZkYWM3OGMxN2VmZDU5
NjVlYmI4ZmI1OGUyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0xNjQsNyArMTY0LDcg
QEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFw
cGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW8KICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlc291cmNl
SW5mbyA6IGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCiAgICAgICAgIHJlc291cmNlcy0+YWRk
SXRlbShidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShyZXNvdXJjZUluZm8p
KTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzb3VyY2VzKTsKKyAgICByZXR1cm4gcmVzb3Vy
Y2VzOwogfQogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpSZXNvdXJjZUluZm8mIHJlc291cmNlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDQyMTg3MmMyYzkyNjhhNzg1MDg3
NTYxNWExZTY5MjlkMDNhODMzZGEuLmM3Y2M4OGM2Yzk4MDEzZjRiMGFhZTc2NzAyN2ZmMmVmNmUz
OWYzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcApAQCAtMTM3Niw3ICsxMzc2LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKgogICAgICAg
ICAgICAgdmFsdWUtPnNldFJvbGUoYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqIGVsZW1lbnQpCkBA
IC0xMzg0LDEzICsxMzg0LDEzIEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBCiAgICAgYXV0byBh
dHRyaWJ1dGVzVmFsdWUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVh
dGUoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhl
bS4KICAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bW92ZShhdHRyaWJ1dGVzVmFsdWUpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVl
OwogICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LT5hdHRyaWJ1
dGVzSXRlcmF0b3IoKSkgewogICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIKICAgICAgICAg
YXR0cmlidXRlc1ZhbHVlLT5hZGRJdGVtKGF0dHJpYnV0ZS5uYW1lKCkudG9TdHJpbmcoKSk7CiAg
ICAgICAgIGF0dHJpYnV0ZXNWYWx1ZS0+YWRkSXRlbShhdHRyaWJ1dGUudmFsdWUoKSk7CiAgICAg
fQotICAgIHJldHVybiBXVEY6Om1vdmUoYXR0cmlidXRlc1ZhbHVlKTsKKyAgICByZXR1cm4gYXR0
cmlidXRlc1ZhbHVlOwogfQogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRN
YXAqIG5vZGVzTWFwKQpAQCAtMTQwMyw3ICsxNDAzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFn
ZW4KICAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShmaXJz
dENoaWxkLCAwLCBub2Rlc01hcCkpOwogICAgICAgICAgICAgbV9jaGlsZHJlblJlcXVlc3RlZC5h
ZGQoYmluZChjb250YWluZXIsIG5vZGVzTWFwKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IFdURjo6bW92ZShjaGlsZHJlbik7CisgICAgICAgIHJldHVybiBjaGlsZHJlbjsKICAgICB9CiAK
ICAgICBOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChjb250YWluZXIpOwpAQCAtMTQxNCw3
ICsxNDE0LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW4KICAgICAgICAgY2hpbGRyZW4tPmFk
ZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCBkZXB0aCwgbm9kZXNNYXApKTsKICAgICAg
ICAgY2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKTsKICAgICB9Ci0gICAgcmV0dXJuIFdU
Rjo6bW92ZShjaGlsZHJlbik7CisgICAgcmV0dXJuIGNoaWxkcmVuOwogfQogCiBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVt
ZW50JiBlbGVtZW50LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCkBAIC0xNDgxLDcgKzE0ODEsNyBA
QCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAgICAgICBpZiAoIXNvdXJjZU5hbWUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgdmFsdWUtPnNldFNvdXJjZU5hbWUoc291cmNlTmFtZSk7CiAgICAg
fQotICAgIHJldHVybiBXVEY6Om1vdmUodmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KICAg
ICAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4o
UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYgYXhPYmplY3QsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxpbnQ+PiYmIGNoaWxkTm9kZUlkcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDhjNDUz
MzdkZGFmOGRhYTg1ZjFlZTQ4Mjc4NTIwZGRjOWE4MTRkYzcuLmU2NzYzM2EyODlkZDIzODAzMTY0
ODE5ZDcyOTA4NTJkNzNjMGU2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRp
YyBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2Fj
dGlvbiA9IGlkYkRhdGFiYXNlLT50cmFuc2FjdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBv
YmplY3RTdG9yZU5hbWUsIG1vZGUsIGVjKTsKICAgICBpZiAoZWMuY29kZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShpZGJUcmFuc2FjdGlvbik7CisgICAg
cmV0dXJuIGlkYlRyYW5zYWN0aW9uOwogfQogCiBzdGF0aWMgUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uKiBpZGJUcmFuc2FjdGlv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBAIC0yMzQsNyArMjM0LDcgQEAgc3Rh
dGljIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmVGb3JUcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbiogaWRiVHJhbnMKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVj
dFN0b3JlID0gaWRiVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgZWMp
OwogICAgIGlmIChlYy5jb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
V1RGOjptb3ZlKGlkYk9iamVjdFN0b3JlKTsKKyAgICByZXR1cm4gaWRiT2JqZWN0U3RvcmU7CiB9
CiAKIHN0YXRpYyBSZWZQdHI8SURCSW5kZXg+IGluZGV4Rm9yT2JqZWN0U3RvcmUoSURCT2JqZWN0
U3RvcmUqIGlkYk9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKQEAgLTI0Myw3
ICsyNDMsNyBAQCBzdGF0aWMgUmVmUHRyPElEQkluZGV4PiBpbmRleEZvck9iamVjdFN0b3JlKElE
Qk9iamVjdFN0b3JlKiBpZGJPYmplY3RTdG9yZSwgY29ucwogICAgIFJlZlB0cjxJREJJbmRleD4g
aWRiSW5kZXggPSBpZGJPYmplY3RTdG9yZS0+aW5kZXgoaW5kZXhOYW1lLCBlYyk7CiAgICAgaWYg
KGVjLmNvZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBXVEY6Om1vdmUo
aWRiSW5kZXgpOworICAgIHJldHVybiBpZGJJbmRleDsKIH0KIAogc3RhdGljIFJlZlB0cjxLZXlQ
YXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkK
QEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgUmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURC
S2V5UGF0aChjb25zdCBJREJLZXlQYXRoJiBpZGJLZXlQYXRoKQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGtleVBhdGgpOworICAg
IHJldHVybiBrZXlQYXRoOwogfQogCiBjbGFzcyBEYXRhYmFzZUxvYWRlciA6IHB1YmxpYyBFeGVj
dXRhYmxlV2l0aERhdGFiYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IDY0MTVhZmQ5YTcxOTQ5MWY1NDY1ODQ5
MDdkMzExYjIyYWZhYWNhMTUuLjcwNDQzNTc5MzVmZDUxMDE4Y2U4ZmU3NWIyZDc4MDJhMWVkNDA5
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVy
VHJlZUFnZW50LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RG
CiAgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiZmlyc3QtbGluZSIp
OwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUobGF5ZXJPYmplY3QpOworICAgIHJldHVy
biBsYXllck9iamVjdDsKIH0KIAogaW50IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjppZEZvck5v
ZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBmNWZjNmU2
OWRhMTc4ODY0NWFmNWZlZTIwNDFiNmYwYWQyNTIyOTY5Li5mZmU5MjMwYjQxYzFiYWE5YTY2ZTQ3
MDk2OGQyODQ4ZGYxNzkyZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYyBSZWY8
SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMp
CiAgICAgICAgIGhlYWRlcnNPYmplY3QtPnNldFN0cmluZyhoZWFkZXIua2V5LCBoZWFkZXIudmFs
dWUpOwotICAgIHJldHVybiBXVEY6Om1vdmUoaGVhZGVyc09iamVjdCk7CisgICAgcmV0dXJuIGhl
YWRlcnNPYmplY3Q7CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0IFJlc291cmNlTG9h
ZFRpbWluZyYgdGltaW5nLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMjEyLDcgKzIxMiw3
IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdD4gYnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgaWYg
KHJlcXVlc3QuaHR0cEJvZHkoKSAmJiAhcmVxdWVzdC5odHRwQm9keSgpLT5pc0VtcHR5KCkpCiAg
ICAgICAgIHJlcXVlc3RPYmplY3QtPnNldFBvc3REYXRhKHJlcXVlc3QuaHR0cEJvZHkoKS0+Zmxh
dHRlblRvU3RyaW5nKCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVzdE9iamVjdCk7Cisg
ICAgcmV0dXJuIHJlcXVlc3RPYmplY3Q7CiB9CiAKIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKQEAgLTI1Miw3ICsyNTIsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hlZFJlcwogICAgIGlmICgh
c291cmNlTWFwcGluZ1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJlc291cmNlT2JqZWN0LT5zZXRT
b3VyY2VNYXBVUkwoc291cmNlTWFwcGluZ1VSTCk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJl
c291cmNlT2JqZWN0KTsKKyAgICByZXR1cm4gcmVzb3VyY2VPYmplY3Q7CiB9CiAKIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6fkluc3BlY3Rvck5ldHdvcmtBZ2VudCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggODU4MGQzMWQyOGNjYjkyZmEy
NDFlNGQwMjAzODk4YzljNmM4OGMyMC4uMDc0NzIxZGY3NDNmZmUwYzk4MWQ0YWZkMDYzYTFhMDlj
YjdiNjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcApAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
T3ZlcmxheVR5cGVzOjpRdWFkPiBidWlsZEFycmF5Rm9yUXVhZChjb25zdCBGbG9hCiAgICAgYXJy
YXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAyKCkpKTsKICAgICBhcnJheS0+
YWRkSXRlbShidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDMoKSkpOwogICAgIGFycmF5LT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wNCgpKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92
ZShhcnJheSk7CisgICAgcmV0dXJuIGFycmF5OwogfQogCiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPiBidWlsZE9iamVj
dEZvckhpZ2hsaWdodChjb25zdCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKQEAgLTQ1MCw3ICs0NTAs
NyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPgogICAgICAgICBhcnJheU9mUmVnaW9ucy0+YWRk
SXRlbShXVEY6Om1vdmUocmVnaW9uT2JqZWN0KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bW92ZShhcnJheU9mUmVnaW9ucyk7CisgICAgcmV0dXJuIGFycmF5T2ZSZWdpb25zOwogfQogCiBz
dGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2l6ZT4gYnVpbGRP
YmplY3RGb3JTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC04MzQsNyArODM0LDcgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlU
eXBlczo6Tm9kZUhpZ2hsaWdodEQKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om1vdmUoaGlnaGxpZ2h0cyk7CisgICAgcmV0dXJuIGhpZ2hsaWdodHM7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6ZHJhd05vZGVIaWdobGlnaHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAwZTAwMDIxZDgyMWFmZmFlZGNk
MjI3MDEyZDJmNTUyNzliOGRkMDZmLi5kYzhmYjA5ZDQ4YjgyZjE1NTRiZGQwZmYxYTEzM2ZlMGE1
YWVhNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gY3JlYXRlWEhSVGV4dERlY29kZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKICAgICAg
ICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIiwgIlVU
Ri04Iik7CiAgICAgZWxzZQogICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShkZWNv
ZGVyKTsKKyAgICByZXR1cm4gZGVjb2RlcjsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFN0
cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHN0
YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6Q29va2llPj4gYnVpbGRBCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBjb29r
aWVzTGlzdCkKICAgICAgICAgY29va2llcy0+YWRkSXRlbShidWlsZE9iamVjdEZvckNvb2tpZShj
b29raWUpKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUoY29va2llcyk7CisgICAgcmV0dXJuIGNv
b2tpZXM7CiB9CiAKIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJj
ZXNGb3JGcmFtZShGcmFtZSogZnJhbWUpCkBAIC05MDgsNyArOTA4LDcgQEAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yRnJhbWUoRnIKICAgICAgICAgZnJhbWVPYmplY3QtPnNldE5hbWUobmFtZSk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIFdURjo6bW92ZShmcmFtZU9iamVjdCk7CisgICAgcmV0dXJuIGZyYW1lT2Jq
ZWN0OwogfQogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRy
ZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCmluZGV4IDY0YjFkNDU5MDk4ZDIyOTViZjZhNmFjOTdkZjE1MDJhN2ExZGVkYmEuLjNmNWI0
MWExZTkyMWI4N2ZiZWY3NTNmOGIzYTI2ZDAyODlmYmU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTE4Myw3ICsxODMsNyBA
QCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE+IGJ1aWxkTWVk
aWFPYmplY3QoY29uc3QgTWVkaWFMaXN0KgogICAgICAgICBtZWRpYU9iamVjdC0+c2V0U291cmNl
VVJMKHNvdXJjZVVSTCk7CiAgICAgICAgIG1lZGlhT2JqZWN0LT5zZXRTb3VyY2VMaW5lKG1lZGlh
LT5xdWVyaWVzKCktPmxhc3RMaW5lKCkpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjptb3ZlKG1l
ZGlhT2JqZWN0KTsKKyAgICByZXR1cm4gbWVkaWFPYmplY3Q7CiB9CiAKIHN0YXRpYyBSZWZQdHI8
Q1NTUnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKQEAg
LTMyNyw3ICszMjcsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydAogICAgICAgICByZXN1bHQt
PmFkZEl0ZW0oV1RGOjptb3ZlKGVudHJ5KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92
ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGU6
OmdldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CkBAIC04NzUsNyArODc1LDcgQEAgc3RhdGlj
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZv
clNlbGVjdG9ySGVscGVyKGMKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1v
dmUoaW5zcGVjdG9yU2VsZWN0b3IpOworICAgIHJldHVybiBpbnNwZWN0b3JTZWxlY3RvcjsKIH0K
IAogc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxl
U291cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQsIGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0LCBFbGVtZW50KiBlbGVtZW50KQpAQCAtODk5LDcg
Kzg5OSw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlCiAKICAgICAgICAgc2VsZWN0b3IgPSBD
U1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpt
b3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0
Rm9yU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBFbGVtZW50KiBlbGVtZW50
KQpAQCAtOTMxLDcgKzkzMSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNlbGVj
dG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTCiAgICAgICAgIC5y
ZWxlYXNlKCk7CiAgICAgaWYgKHNvdXJjZURhdGEpCiAgICAgICAgIHJlc3VsdC0+c2V0UmFuZ2Uo
YnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5ydWxlSGVhZGVyUmFuZ2UsIGxpbmVF
bmRpbmdzKCkuZ2V0KCkpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVs
ZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSog
cnVsZSwgRWxlbWVudCogZWxlbWVudCkKQEAgLTk5Miw3ICs5OTIsNyBAQCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRP
YmplY3RGb3JTdAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1
bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
c2V0U3R5bGVUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBTdHJpbmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTIzMSw3ICsxMjMxLDcg
QEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUnVsZT4+IEluc3BlY3RvclN0eWwKIHsKICAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT46OmNy
ZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4g
cmVmUnVsZUxpc3QgPSBydWxlTGlzdDsKICAgICBDU1NTdHlsZVJ1bGVWZWN0b3IgcnVsZXM7CkBA
IC0xMjQwLDcgKzEyNDAsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yU3R5bAogICAgIGZvciAoYXV0
byYgcnVsZSA6IHJ1bGVzKQogICAgICAgICByZXN1bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JS
dWxlKHJ1bGUuZ2V0KCksIG51bGxwdHIpKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNv
bGxlY3RGbGF0UnVsZXMoUmVmUHRyPENTU1J1bGVMaXN0PiYmIHJ1bGVMaXN0LCBDU1NTdHlsZVJ1
bGVWZWN0b3IqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBkODZhZDEzNjQ2YWQwMDFhNmIwNDEzMjFlZmIy
NzljY2U4Y2M0OTZhLi41MmU1YTZlMTllZWI5NGQ2MWE4YmFkM2YwZWVmMDBkYjU2ODYwMjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgUmVmUHRyPEpTQzo6UHJvZmlsZT4gSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiBleGUKICAgICAg
ICAgICAgIGlmICghbV9lbmFibGVkRnJvbUZyb250ZW5kICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9m
aWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgaW50ZXJuYWxTdG9wKCk7CiAK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUocHJvZmlsZSk7CisgICAgICAgICAgICByZXR1
cm4gcHJvZmlsZTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCAwOWRlZWVjOTMwMDk1NTVl
YzM2ZWI5YzRkNTAxMjVhODMxZjJjNDBlLi44OTdiMTFhOGNjZjcwOTFlZmIzNjEzMjIyOTc5OWNk
ODE1Zjc5Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZWY8SW5zcGVjdG9yT2JqZWN0PiBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGlt
ZQogICAgICAgICBpZiAoc3RhY2tUcmFjZSAmJiBzdGFja1RyYWNlLT5zaXplKCkpCiAgICAgICAg
ICAgICByZWNvcmQtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgic3RhY2tUcmFjZSIpLCBzdGFja1Ry
YWNlLT5idWlsZEluc3BlY3RvckFycmF5KCkpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjptb3Zl
KHJlY29yZCk7CisgICAgcmV0dXJuIHJlY29yZDsKIH0KIAogUmVmPEluc3BlY3Rvck9iamVjdD4g
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpCkBAIC02MywxNCArNjMsMTQgQEAgUmVmPElu
c3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxE
YXRhKGNvbnN0IFN0cmluZyYKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJz
Y3JpcHROYW1lIiksIHNjcmlwdE5hbWUpOwogICAgIGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRl
cmFsKCJzY3JpcHRMaW5lIiksIHNjcmlwdExpbmUpOwotICAgIHJldHVybiBXVEY6Om1vdmUoZGF0
YSk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidGl0bGUiKSwgdGl0
bGUpOwotICAgIHJldHVybiBXVEY6Om1vdmUoZGF0YSk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAK
IFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVT
YW1wbGVEYXRhKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQg
c2FtcGxlSWQpCkBAIC03OCwyMSArNzgsMjEgQEAgUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoY29uc3QgU2NyaXB0QnIKICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBkYXRhLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgicHJvYmVJZCIpLCBhY3Rpb24uaWRl
bnRpZmllcik7CiAgICAgZGF0YS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInNhbXBsZUlkIiks
IHNhbXBsZUlkKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGRhdGEpOworICAgIHJldHVybiBkYXRh
OwogfQogCiBSZWY8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZUV2ZW50RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50JiBldmVudCkKIHsKICAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkYXRhLT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0eXBlIiksIGV2ZW50LnR5cGUoKS5zdHJpbmcoKSk7Ci0g
ICAgcmV0dXJuIFdURjo6bW92ZShkYXRhKTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogUmVmPElu
c3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJE
YXRhKGludCB0aW1lcklkKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRlcmFs
KCJ0aW1lcklkIiksIHRpbWVySWQpOwotICAgIHJldHVybiBXVEY6Om1vdmUoZGF0YSk7CisgICAg
cmV0dXJuIGRhdGE7CiB9CiAKIFJlZjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlVGltZXJJbnN0YWxsRGF0YShpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJv
b2wgc2luZ2xlU2hvdCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBSZWY8SW5zcGVjdG9yT2JqZWN0PiBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQs
CiAgICAgZGF0YS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInRpbWVySWQiKSwgdGltZXJJZCk7
CiAgICAgZGF0YS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInRpbWVvdXQiKSwgdGltZW91dCk7
CiAgICAgZGF0YS0+c2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoInNpbmdsZVNob3QiKSwgc2luZ2xl
U2hvdCk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShkYXRhKTsKKyAgICByZXR1cm4gZGF0YTsKIH0K
IAogUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVFdmFs
dWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBsaW5lTnVtYmVyKQpAQCAt
MTA5LDIxICsxMDksMjEgQEAgUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW4KICAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkYXRhLT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ1cmwiKSwgdXJsKTsKICAgICBkYXRhLT5zZXRJbnRlZ2Vy
KEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCBsaW5lTnVtYmVyKTsKLSAgICByZXR1cm4gV1RG
Ojptb3ZlKGRhdGEpOworICAgIHJldHVybiBkYXRhOwogfQogCiBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVTdGFtcERhdGEoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGRhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1lc3Nh
Z2UiKSwgbWVzc2FnZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShkYXRhKTsKKyAgICByZXR1cm4g
ZGF0YTsKIH0KIAogUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxiYWNrSWQpCiB7CiAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+
c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImlkIiksIGNhbGxiYWNrSWQpOwotICAgIHJldHVybiBX
VEY6Om1vdmUoZGF0YSk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVj
dG9yQXJyYXk+IGNyZWF0ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQpAQCAtMTM3LDE0ICsx
MzcsMTQgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3JBcnJheT4gY3JlYXRlUXVhZChjb25zdCBGbG9h
dFF1YWQmIHF1YWQpCiAgICAgYXJyYXktPnB1c2hEb3VibGUocXVhZC5wMygpLnkoKSk7CiAgICAg
YXJyYXktPnB1c2hEb3VibGUocXVhZC5wNCgpLngoKSk7CiAgICAgYXJyYXktPnB1c2hEb3VibGUo
cXVhZC5wNCgpLnkoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShhcnJheSk7CisgICAgcmV0dXJu
IGFycmF5OwogfQogCiBSZWY8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZVBhaW50RGF0YShjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiB7CiAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+
c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjbGlwIiksIGNyZWF0ZVF1YWQocXVhZCkpOwotICAgIHJl
dHVybiBXVEY6Om1vdmUoZGF0YSk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIHZvaWQgVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjphcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwg
Y29uc3QgRmxvYXRRdWFkJiBxdWFkKQpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBSZWY8UHJv
dG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoY29u
c3QgSlNDOjpQCiAgICAgICAgIHJlc3VsdC0+c2V0Q2hpbGRyZW4oV1RGOjptb3ZlKGNoaWxkcmVu
KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlPiBi
dWlsZFByb2ZpbGVJbnNwZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQcm9maWxlKiBwcm9maWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNDgxNTBhMGUzYTRmMjdkODkw
MjI1MGNhM2FkZmMwMmYzNTYzYzY4MS4uNzUwNDk3MjhhODhiMTkzZmM2Mzg3ZjY3OTQyYTY1Yjll
OTAzNTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zNTIzLDcg
KzM1MjMsNyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUs
IEZyYW1lJiBsb29rdXBGcmFtZSwgY29uc3QgRnJhbWVMbwogICAgICAgICAgICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hy
b21lKCkuZm9jdXMoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om1v
dmUoZnJhbWUpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0zNjE1LDcgKzM2MTUsNyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYg
b3BlbmVyRnJhbWUsIEZyYW1lJiBsb29rdXBGcmFtZSwgY29uc3QgRnJhbWVMbwogICAgIHBhZ2Ut
PmNocm9tZSgpLnNob3coKTsKIAogICAgIGNyZWF0ZWQgPSB0cnVlOwotICAgIHJldHVybiBXVEY6
Om1vdmUoZnJhbWUpOworICAgIHJldHVybiBmcmFtZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDdj
MTBkY2YwMDVmOGM1M2I0MjZlMTk4MDRmMzJjZjBjZjVkZTZiYjUuLjY2ZjQzMWQxMWJmZGFkZGI0
Y2RiOGNlOWJiNjk1NDlkYTEyZDUyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBOYXZpZ2F0aW9uQWN0aW9uIE5hdmln
YXRpb25BY3Rpb246OmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShTaG91bGRP
cAogewogICAgIE5hdmlnYXRpb25BY3Rpb24gcmVzdWx0KCp0aGlzKTsKICAgICByZXN1bHQubV9z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDFlOWM3MDg3MmI4MGEyYjcyMTc1
MTJhODJjMDU4NjBkNjczMzgxY2UuLjVmMWU3MzIwMjNmNWVkMmFhOTFlNDllYzJiNTdmNzgwZTdi
ZjQ5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTIxMjgsNyArMjEyOCw3IEBA
IFJlZlB0cjxGcmFtZT4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgbmV3RnJhbWUtPnBhZ2UoKS0+c2V0T3BlbmVk
QnlET00oKTsKIAogICAgIGlmIChuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmlz
SW5zZWN1cmVTY3JpcHRBY2Nlc3MoYWN0aXZlV2luZG93LCBjb21wbGV0ZWRVUkwpKQotICAgICAg
ICByZXR1cm4gV1RGOjptb3ZlKG5ld0ZyYW1lKTsKKyAgICAgICAgcmV0dXJuIG5ld0ZyYW1lOwog
CiAgICAgaWYgKHByZXBhcmVEaWFsb2dGdW5jdGlvbikKICAgICAgICAgcHJlcGFyZURpYWxvZ0Z1
bmN0aW9uKCpuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwpAQCAtMjE0Niw3ICsy
MTQ2LDcgQEAgUmVmUHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KICAgICBpZiAoIW5ld0ZyYW1lLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShuZXdG
cmFtZSk7CisgICAgcmV0dXJuIG5ld0ZyYW1lOwogfQogCiBQYXNzUmVmUHRyPERPTVdpbmRvdz4g
RE9NV2luZG93OjpvcGVuKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRleCA5
NmY1MGRmMDc0MDE4NDY0MGE4ZjNlYTYwNDI0NTkyZjZhNWE5NmEwLi40MTlkN2ZkMDI0YTFlZTU2
NWYwMjNiZjIxOWI0Yzc3OTA3M2NlMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCkBAIC00MDMsNyArNDAzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1
aWNrTG9va0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBjb25uZWN0aW9uLCBuc1Jl
c3BvbnNlLCBkZWxlZ2F0ZSkpOwogICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZENyZWF0ZVF1aWNr
TG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHF1aWNr
TG9va0hhbmRsZSk7CisgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKIH0KIAogI2lmIFVTRShD
Rk5FVFdPUkspCkBAIC00MTcsNyArNDE3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hh
bmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwKICAg
ICBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbW1dlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOmNvbm5l
Y3Rpb25EZWxlZ2F0ZV0gYXV0b3JlbGVhc2VdOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xv
b2tIYW5kbGU+IHF1aWNrTG9va0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBuaWws
IG5zUmVzcG9uc2UsIGRlbGVnYXRlKSk7CiAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkQ3JlYXRl
UXVpY2tMb29rSGFuZGxlKCpxdWlja0xvb2tIYW5kbGUpOwotICAgIHJldHVybiBXVEY6Om1vdmUo
cXVpY2tMb29rSGFuZGxlKTsKKyAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwogfQogCiBDRlVS
TFJlc3BvbnNlUmVmIFF1aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCkBAIC00MzksNyArNDM5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpj
cmVhdGUoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbbG9hZGVyLm9y
aWdpbmFsUmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBu
aWwsIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgZGVsZWdhdGUuZ2V0KCkpKTsKICAgICBbZGVs
ZWdhdGUgc2V0UXVpY2tMb29rSGFuZGxlOnF1aWNrTG9va0hhbmRsZS5nZXQoKV07CiAgICAgbG9h
ZGVyLmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsKLSAgICByZXR1
cm4gV1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7CisgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRs
ZTsKIH0KIAogTlNVUkxSZXNwb25zZSAqUXVpY2tMb29rSGFuZGxlOjpuc1Jlc3BvbnNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkMzc1M2EzZWQ1MzIzNWZhOTg2NTRm
ODhhOTUyYmEyYTQ5MWJmMDU0Li40MzM0NGM4YTM0Y2U5Yzg2OTk0MzQyNWQ4MTM5MzcwZjUzMGY2
OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xODAxLDcgKzE4MDEs
NyBAQCBSZWZQdHI8RE9NV2luZG93PiBJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250
ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIFJlZlB0cjxET01XaW5kb3c+IGZyb250ZW5kV2lu
ZG93ID0gd2luZG93LT5vcGVuKHVybCwgIiIsICIiLCAqd2luZG93LCAqd2luZG93KTsKICAgICBt
X2luc3BlY3RvckZyb250ZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRl
bmQ+KGluc3BlY3RlZFBhZ2UsIGZyb250ZW5kV2luZG93LmNvcHlSZWYoKSk7CiAKLSAgICByZXR1
cm4gV1RGOjptb3ZlKGZyb250ZW5kV2luZG93KTsKKyAgICByZXR1cm4gZnJvbnRlbmRXaW5kb3c7
CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDk2NGEw
YWFhNDdiMzU2MjgwOTA0NmQ1NzY5ZjMxNTYzZDcxMThjOWYuLjM3MTk0NjllZmU5NjkwNzI2MTYz
MGU5MDBmYmIxYTAyZDE5OTRkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVzdCgp
CiB7CiAgICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+
KG1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKLSAgICByZXR1cm4g
V1RGOjptb3ZlKHJlcXVlc3QpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogICAgIAogdm9pZCBX
b3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhFeHByZXNzaW9uLmNwcAppbmRleCBmZGZiOGFlZDg2YTcwYjc3ODA5OTlhMjM1NzQyOTQz
MWFlYTA5YjA3Li4zMWI5OTA2ZGIxMjIyZDRmYWRjZGMyNmNjZDVlN2VhNDJkMjZhMTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcApAQCAtODcsNyArODcsNyBAQCBSZWZQ
dHI8WFBhdGhSZXN1bHQ+IFhQYXRoRXhwcmVzc2lvbjo6ZXZhbHVhdGUoTm9kZSogY29udGV4dE5v
ZGUsIHVuc2lnbmVkIHNob3J0CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1OTJhYTEx
NTYxZWUwOGFmZTVkNzRjZjU1ZmQ3OTNmNGI3MjA2Yjk0Li44M2RkM2YxMGNkNjViODRlMDAxMmE5
YjRmZWFhNjdiMjMwM2Q4OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFi
YXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yCiAgICAg
cmVjb3JkLT5jdXJyZW50RGF0YWJhc2VVc2FnZSA9IGN1cnJlbnREYXRhYmFzZVVzYWdlOwogICAg
IHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSA9IGV4cGVjdGVkVXNhZ2U7CiAgICAgcmVjb3JkLT5yZXBs
eSA9IHJlcGx5OwotICAgIHJldHVybiBXVEY6Om1vdmUocmVjb3JkKTsKKyAgICByZXR1cm4gcmVj
b3JkOwogfQogCiB2b2lkIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFkZChzdGQ6OnVu
aXF1ZV9wdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiByZWNvcmQpCg==
</data>
<flag name="review"
          id="292899"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="292900"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>