<?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>177480</bug_id>
          
          <creation_ts>2017-09-25 21:48:21 -0700</creation_ts>
          <short_desc>Make PolicyAction an encodable enum class</short_desc>
          <delta_ts>2017-09-27 12:15:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1352572</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 21:48:21 -0700</bug_when>
    <thetext>Make PolicyAction an encodable enum class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352575</commentid>
    <comment_count>1</comment_count>
      <attachid>321789</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 21:56:25 -0700</bug_when>
    <thetext>Created attachment 321789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352579</commentid>
    <comment_count>2</comment_count>
      <attachid>321789</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-25 22:00:19 -0700</bug_when>
    <thetext>Comment on attachment 321789
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.messages.in:102
&gt; +    DecidePolicyForNavigationAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::UserData userData) -&gt; (uint64_t newNavigationID, enum WebCore::PolicyAction policyAction, WebKit::DownloadID downloadID, struct WebKit::WebsitePolicies websitePolicies) Delayed

Would be nice make these sane at some point (by packing all the million arguments into a struct for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352580</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-25 22:00:31 -0700</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352584</commentid>
    <comment_count>4</comment_count>
      <attachid>321795</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 22:28:53 -0700</bug_when>
    <thetext>Created attachment 321795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352586</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 22:52:59 -0700</bug_when>
    <thetext>http://trac.webkit.org/r222492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353242</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:15:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/34692891&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321789</attachid>
            <date>2017-09-25 21:56:25 -0700</date>
            <delta_ts>2017-09-25 22:28:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177480-20170925215625.patch</filename>
            <type>text/plain</type>
            <size>41915</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA5LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBQb2xp
Y3lBY3Rpb24gYW4gZW5jb2RhYmxlIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzQ4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKiBsb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOZXdXaW5kb3dQb2xpY3kpOgorCiAyMDE3LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBBdHRyaWJ1dGUgYW4gZW51bSBj
bGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZp
c2lvbiAyMjI0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OTUsMTQgKzY5NSwxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpyZXNwb25zZVJlY2VpdmVkKGNvCiAKICAgICAvLyBBbHdheXMgc2hvdyBjb250ZW50IHdpdGgg
dmFsaWQgc3Vic3RpdHV0ZSBkYXRhLgogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkgewotICAgICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lVc2UpOworICAg
ICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICNpZiBFTkFCTEUoRlRQRElSKQogICAgIC8vIFJlc3BlY3Qg
dGhlIGhpZGRlbiBGVFAgRGlyZWN0b3J5IExpc3RpbmcgcHJlZiBzbyBpdCBjYW4gYmUgdGVzdGVk
IGV2ZW4gaWYgdGhlIHBvbGljeSBkZWxlZ2F0ZSBtaWdodCBvdGhlcndpc2UgZGlzYWxsb3cgaXQK
ICAgICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKS5mb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKCkg
JiYgbV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3Rvcnki
KSB7Ci0gICAgICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeVVzZSk7CisgICAg
ICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNzQ3LDcgKzc0Nyw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgc3dp
dGNoIChwb2xpY3kpIHsKLSAgICBjYXNlIFBvbGljeVVzZTogeworICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpVc2U6IHsKICAgICAgICAgLy8gUHJldmVudCByZW1vdGUgd2ViIGFyY2hpdmVzIGZyb20g
bG9hZGluZyBiZWNhdXNlIHRoZXkgY2FuIGNsYWltIHRvIGJlIGZyb20gYW55IGRvbWFpbiBhbmQg
dGh1cyBhdm9pZCBjcm9zcy1kb21haW4gc2VjdXJpdHkgY2hlY2tzICg0MTIwMjU1KS4KICAgICAg
ICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGUobV9yZXNwb25z
ZS5taW1lVHlwZSgpKSB8fCBpc1JlbW90ZVdlYkFyY2hpdmUoKnRoaXMpKSB7CiAgICAgICAgICAg
ICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2Fubm90U2hvd01JTUVUeXBlKG1fcmVz
cG9uc2UpOwpAQCAtNzU4LDcgKzc1OCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVl
QWZ0ZXJDb250ZW4KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBQb2xpY3lEb3du
bG9hZDogeworICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3dubG9hZDogewogICAgICAgICAvLyBt
X21haW5SZXNvdXJjZSBjYW4gYmUgbnVsbCwgZS5nLiB3aGVuIGxvYWRpbmcgYSBzdWJzdGl0dXRl
IHJlc291cmNlIGZyb20gYXBwbGljYXRpb24gY2FjaGUuCiAgICAgICAgIGlmICghbV9tYWluUmVz
b3VyY2UpIHsKICAgICAgICAgICAgIG1haW5SZWNlaXZlZEVycm9yKGZyYW1lTG9hZGVyKCktPmNs
aWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihtX3JlcXVlc3QpKTsKQEAgLTc4Nyw3ICs3ODcsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVuCiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxSZXNvdXJjZUxvYWRlcio+KG1haW5SZXNvdXJjZUxvYWRlcigpKS0+ZGlkRmFp
bChpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGNhc2UgUG9saWN5SWdub3JlOgorICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25v
cmU6CiAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gdGhp
cy0+bWFpblJlc291cmNlTG9hZGVyKCkpCiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZSgqbV9mcmFtZSwgbWFpblJlc291cmNlTG9h
ZGVyLT5pZGVudGlmaWVyKCksICp0aGlzLCBtX3Jlc3BvbnNlKTsKICAgICAgICAgc3RvcExvYWRp
bmdGb3JQb2xpY3lDaGFuZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyVHlwZXMuaAkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIGVudW0g
RnJhbWVTdGF0ZSB7CiAgICAgRnJhbWVTdGF0ZUNvbXBsZXRlCiB9OwogCi1lbnVtIFBvbGljeUFj
dGlvbiB7Ci0gICAgUG9saWN5VXNlLAotICAgIFBvbGljeURvd25sb2FkLAotICAgIFBvbGljeUln
bm9yZQorZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24geworICAgIFVzZSwKKyAgICBEb3dubG9hZCwK
KyAgICBJZ25vcmUKIH07CiAKIGVudW0gY2xhc3MgUmVsb2FkT3B0aW9uIHsKQEAgLTE0NywzICsx
NDcsMTkgQEAgZW51bSBjbGFzcyBIYXNJbnNlY3VyZUNvbnRlbnQgewogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBFbnVtVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWUgRSwgRS4uLj4gc3RydWN0IEVudW1W
YWx1ZXM7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UG9saWN5QWN0
aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
UG9saWN5QWN0aW9uLAorICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlVzZSwKKyAgICAg
ICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpEb3dubG9hZCwKKyAgICAgICAgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyMjI0NzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NiwxMyArMTQ2LDEzIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWMKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdENvcHkgPSByZXF1ZXN0OwogICAg
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIGZv
cm1TdGF0ZSwgW3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3RDb3B5KSwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBz
dWdnZXN0ZWRGaWxlbmFtZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24p
IHsKLSAgICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDoKKyAgICAgICAgY2FzZSBQb2xpY3lBY3Rp
b246OkRvd25sb2FkOgogICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5zZXRPcmlnaW5hbFVS
TEZvckRvd25sb2FkUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAgIG1fZnJhbWUubG9hZGVy
KCkuY2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAg
ICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgY2FzZSBQb2xpY3lJZ25vcmU6CisgICAg
ICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCBmYWxzZSk7Ci0gICAgICAgIGNhc2UgUG9saWN5VXNlOgorICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRl
cigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAg
ICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5j
YW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKQEAgLTE3NCwxMyArMTc0LDEzIEBAIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kKIAogICAgIG1fZnJhbWUubG9hZGVyKCku
Y2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlv
bkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYo
bV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9ybVN0YXRlKSwgZnJh
bWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoIChwb2xp
Y3lBY3Rpb24pIHsKLSAgICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDoKKyAgICAgICAgY2FzZSBQ
b2xpY3lBY3Rpb246OkRvd25sb2FkOgogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCk7CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAg
ICAgICAgY2FzZSBQb2xpY3lJZ25vcmU6CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25v
cmU6CiAgICAgICAgICAgICBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBmYWxzZSk7
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgUG9saWN5VXNlOgorICAgICAgICBj
YXNlIFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgZm9y
bVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIHRydWUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNDg5KQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBA
QAorMjAxNy0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1ha2UgUG9saWN5QWN0aW9uIGFuIGVuY29kYWJsZSBlbnVtIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBp
bmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TmV0d29ya0RhdGFUYXNrUmVwbGF5OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgICh0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6bmF2aWdhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6
dXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojpkb3du
bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6aWdu
b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0wOS0yNSAgRnJlZGVyaWsgUmllZGVsICA8cmllZGVsQGFw
cGxlLmNvbT4KIAogICAgICAgICBFeHBvc2Ugd2F5IHRvIHNldCB2YWx1ZXMgb2YgY2xhc3NpZmll
ZCBmb3JtIGNvbnRyb2xzIGFzIHtMZWdhY3kgV2ViS2l0LCBXZWJLaXR9IFNQSQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpk
aWRSZWMKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2VO
ZXR3b3JrU2Vzc2lvbiIpOwogICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlBvbGljeVVzZSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAgICAgYXV0byB1
cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUlnbm9yZSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcih7IFN0cmluZygpLCAwLCB1cmwsICJD
YW5jZWxsZWQgbG9hZCBmcm9tICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpICsgIicgYmVjYXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTUsMTMgKzMxNSwxMyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlk
UmVjCiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewotICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6UG9saWN5VXNlOgorICAgICAgICBjYXNlIFBvbGljeUFjdGlv
bjo6VXNlOgogICAgICAgICAgICAgbV9idWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwogICAgICAg
ICAgICAgcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpQb2xpY3lJZ25vcmU6CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlBvbGljeURvd25s
b2FkOgorICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBk
b3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMjI0NzEp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
ICAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBtX3Jlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIoUG9saWN5SWdub3JlKTsKKyAgICAgICAgbV9yZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICBpZiAobV9yZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKQogICAgICAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3AKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsK
ICAgICAgICAgYXV0byByZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZSht
X3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgICAgICByZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKFBvbGljeVVzZSk7CisgICAgICAgIHJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogICAgIH0KICNlbHNlCiAgICAgaWYgKG1faGFuZGxl
KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVS
ZXNwb24KICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5VXNlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVz
ZSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdAogdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24gLSBodHRw
U3RhdHVzQ29kZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgIGRpZEZpbmlzaCgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNp
ZGVQZW5kCiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxv
YWRJRCkpOwogCiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oZGVzdGluYXRpb24sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRl
KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5RG93bmxvYWQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OkRvd25sb2FkKTsKICAgICAgICAgaWYgKG5l
dHdvcmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDYW5jZWxp
bmcgfHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6
OkNvbXBsZXRlZCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTk2LDcgKzE5Niw3IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3cKICAgICAgICAgQVNTRVJUKGNv
bXBsZXRpb25IYW5kbGVyKTsKIAogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmNhbmNlbCgpOwot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lJZ25vcmUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgIG1fY2xpZW50LnBlbmRp
bmdEb3dubG9hZENhbmNlbGVkKGRvd25sb2FkSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtEYXRhVGFz
a1JlcGxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtEYXRhVGFza1JlcGxheS5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksMTMgKzI0OSwxMyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza1JlcGxheTo6ZGlkUmVjZWl2ZVJlCiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKHBv
bGljeUFjdGlvbikgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6UG9saWN5
VXNlOgorICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAg
ICAgZW5xdWV1ZUV2ZW50SGFuZGxlcigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmU6CisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICBjb21wbGV0ZSgpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xp
Y3lEb3dubG9hZDoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OkRvd25sb2Fk
OgogICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBv
bGljeURvd25sb2FkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMSArNTcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHN0YXRpYyBOU1VSTFNlc3Np
b25SZXNwb25zZURpc3Bvc2l0aW9uIHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24gZGlzcG9zaXRpb24pCiB7CiAgICAgc3dpdGNoIChkaXNwb3Np
dGlvbikgewotICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmU6Cisg
ICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgcmV0dXJuIE5T
VVJMU2Vzc2lvblJlc3BvbnNlQ2FuY2VsOwotICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9u
OjpQb2xpY3lVc2U6CisgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlVzZToKICAgICAg
ICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJlc3BvbnNlQWxsb3c7Ci0gICAgY2FzZSBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb246OlBvbGljeURvd25sb2FkOgorICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0
aW9uOjpEb3dubG9hZDoKICAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJlc3BvbnNlQmVjb21l
RG93bmxvYWQ7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkocmV2aXNpb24gMjIy
NDcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpkaXNwYXRjaERpZFJlYwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNo
IChwb2xpY3lBY3Rpb24pIHsKLSAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlBvbGljeVVzZToK
KyAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAg
ICAgaWYgKG1faW5wdXRTdHJlYW0pCiAgICAgICAgICAgICAgICAgcmVhZCgpOwogICAgICAgICAg
ICAgZWxzZSBpZiAobV9tdWx0aXBhcnRJbnB1dFN0cmVhbSkKQEAgLTM4NiwxMCArMzg2LDEwIEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgUG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmU6CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9u
OjpQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgICAgIGNsZWFyUmVxdWVzdCgpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpQb2xpY3lEb3dubG9h
ZDoKKyAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAg
ICAgICAgICAgICBkb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjIy
NDcxKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzg3LDYgKzM4Nyw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgog
ICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAorICAgICAgICAnV2ViQ29y
ZTo6UG9saWN5QWN0aW9uJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAg
ICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNl
clN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgi
J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGEn
OiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVu
ZXJQcm94eS5oCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViRnJhbWVQcm94eTsKLQog
Y2xhc3MgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lcj4gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5PiBjcmVhdGUo
V1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgJKHJldmlz
aW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IGludmFsaWRhdGUoKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEKCkgY29uc3QgeyByZXR1cm4g
bV9saXN0ZW5lcklEOyB9CiAKLSAgICBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24oKSB7IHJl
dHVybiBtX25hdmlnYXRpb24uZ2V0KCk7IH0KICAgICB2b2lkIHNldE5hdmlnYXRpb24oUmVmPEFQ
STo6TmF2aWdhdGlvbj4mJiBuYXZpZ2F0aW9uKSB7IG1fbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2
aWdhdGlvbik7IH0KIAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAy
MjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNyArMzgsMTcgQEAgV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5OjpXZWJGcmFtZVBvbAogCiB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eTo6dXNlKGNvbnN0IFdlYnNpdGVQb2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKQogewot
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5VXNlLCB3ZWJzaXRlUG9s
aWNpZXMpOworICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9u
OjpVc2UsIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5Ojpkb3dubG9hZCgpCiB7Ci0gICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3Jl
OjpQb2xpY3lEb3dubG9hZCwgeyB9KTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeUFjdGlvbjo6RG93bmxvYWQsIHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5OjppZ25vcmUoKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
V2ViQ29yZTo6UG9saWN5SWdub3JlLCB7IH0pOworICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
V2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjY0LDE2ICsyMjY0LDE2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3Bh
Z2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIGlmIChhY3Rpb24gPT0gUG9saWN5SWdu
b3JlKQorICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpJZ25vcmUpCiAgICAgICAgIG1f
cGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uKTsKIAog
I2lmIEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpCi0gICAgaWYgKG1fc3luY05hdmlnYXRpb25B
Y3Rpb25IYXNEb3dubG9hZEF0dHJpYnV0ZSAmJiBhY3Rpb24gPT0gUG9saWN5VXNlKQotICAgICAg
ICBhY3Rpb24gPSBQb2xpY3lEb3dubG9hZDsKKyAgICBpZiAobV9zeW5jTmF2aWdhdGlvbkFjdGlv
bkhhc0Rvd25sb2FkQXR0cmlidXRlICYmIGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSkKKyAg
ICAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9uOjpEb3dubG9hZDsKICNlbmRpZgogCiAgICAgRG93
bmxvYWRJRCBkb3dubG9hZElEID0geyB9OwotICAgIGlmIChhY3Rpb24gPT0gUG9saWN5RG93bmxv
YWQpIHsKKyAgICBpZiAoYWN0aW9uID09IFBvbGljeUFjdGlvbjo6RG93bmxvYWQpIHsKICAgICAg
ICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAgIGF1dG8qIGRvd25sb2FkID0g
bV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURvd25sb2FkUHJveHkobV9kZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMpOwogICAgICAgICBpZiAobmF2aWdhdGlvbikgewpA
QCAtMzY4Niw3ICszNjg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS0+ZGlk
SGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7Ci0gICAgICAg
IHJlcGx5LT5zZW5kKG1fbmV3TmF2aWdhdGlvbklELCBQb2xpY3lJZ25vcmUsIHsgfSwgeyB9KTsK
KyAgICAgICAgcmVwbHktPnNlbmQobV9uZXdOYXZpZ2F0aW9uSUQsIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCB7IH0sIHsgfSk7CiAgICAgICAgIG1fbmV3TmF2aWdhdGlvbklEID0gMDsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtOTgs
OCArOTgsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICAjIFBv
bGljeSBtZXNzYWdlcwotICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01J
TUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAt
PiAodWludDY0X3QgcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkg
RGVsYXllZAotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKSAtPiAodWludDY0X3QgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCBwb2xpY3lBY3Rp
b24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRl
UG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpIC0+IChlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKSBEZWxheWVkCisgICAgRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+ICh1aW50NjRf
dCBuZXdOYXZpZ2F0aW9uSUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQ
b2xpY2llcyB3ZWJzaXRlUG9saWNpZXMpIERlbGF5ZWQKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAy
MjI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzksMTIgKzY3OSwxMiBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAgICAg
ZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJ
Z25vcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFyZXF1ZXN0LnVybCgp
LnN0cmluZygpKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CisgICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjkz
LDMzICs2OTMsMzMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAog
ICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwg
dXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNl
KSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6VXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGJvb2wgY2FuU2hv
d01JTUVUeXBlID0gd2ViUGFnZS0+Y2FuU2hvd01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkp
OwogCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVu
ZXIoV1RGTW92ZShmdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IHBvbGljeUFjdGlvbjsKKyAgICBQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uOwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRDsKIAog
ICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7CiAgICAgV2ViQ29yZTo6RnJhbWUq
IGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1dG8gbmF2aWdhdGlvbklE
ID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqY29yZUZyYW1lLT5sb2FkZXIoKS5w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpLm5hdmlnYXRpb25JRCgpOwogICAgIGlmICghd2Vi
UGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJh
bWUoY29yZUZyYW1lKSwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01J
TUVUeXBlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OlJlcGx5KHBvbGljeUFj
dGlvbiwgZG93bmxvYWRJRCksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRp
b246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKSkgewotICAgICAgICBtX2ZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5SWdub3JlLCAwLCB7
IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIENGTmV0d29yayBj
YW4gb25seSBjb252ZXJ0IGEgbG9hZGluZyBjb25uZWN0aW9uIHRvIGEgZG93bmxvYWQgZnJvbSBp
dHMgZGlkUmVjZWl2ZVJlc3BvbnNlIGNhbGxiYWNrLgotICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGlj
eUFjdGlvbiksIDAsIGRvd25sb2FkSUQpOworICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIDAsIGRvd25sb2FkSUQpOwogfQogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7Ci0g
ICAgICAgIGZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFj
dGlvbjo6SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzMwLDcgKzczMCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAvLyBOb3Rp
ZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGlj
eSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwg
ZnJhbWVOYW1lLCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xp
Y3lBY3Rpb25Vc2UpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5VXNlKTsKKyAgICAgICAgZnVu
Y3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
NTUsMTMgKzc1NSwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
CiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdl
YlBhZ2UpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKKyAgICAgICAgZnVuY3Rp
b24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Ly8gQWx3YXlzIGlnbm9yZSByZXF1ZXN0cyB3aXRoIGVtcHR5IFVSTHMuIAogICAgIGlmIChyZXF1
ZXN0LmlzRW1wdHkoKSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lJZ25vcmUpOworICAgICAg
ICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTc3MiwxMyArNzcyLDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWQKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQ
YWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xp
ZW50KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBh
Y3Rpb24uZ2V0KCksIHJlcXVlc3QsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVu
ZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwor
ICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5
TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25J
RDsKLSAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247CisgICAgUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbjsKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAKICAgICBBU1NFUlQobmF2aWdhdGlv
bkFjdGlvbi5zb3VyY2VEb2N1bWVudCgpKTsKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgUmVmPFdlYkZyYW1lPiBwcm90ZWN0
KCptX2ZyYW1lKTsKICAgICBXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzOwogICAgIGlm
ICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRp
bmdGcmFtZSAmJiBvcmlnaW5hdGluZ0ZyYW1lLT5wYWdlKCkgPyBvcmlnaW5hdGluZ0ZyYW1lLT5w
YWdlKCktPnBhZ2VJRCgpIDogMCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdCwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkobmV3
TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykp
KSB7Ci0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklE
LCBQb2xpY3lJZ25vcmUsIDAsIHsgfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODU1LDcgKzg1NSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICB9CiAKICAgICAvLyBXZSBjYWxsIHRoaXMg
c3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fubm90IGdyYWNlZnVsbHkgaGFuZGxlIGEg
ZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMgbmF2aWdhdGlvbiBwb2xpY3kgcmVwbHku
Ci0gICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRp
Y19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmV3TmF2aWdhdGlvbklELCBkb3du
bG9hZElEKTsKKyAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgcG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpOwogfQogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAyMjI0
NzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlkYXRl
UG9saWN5TGlzdGVuZXIoCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAgIG1fcG9s
aWN5TGlzdGVuZXJJRCA9IDA7CiAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdl
KG1fcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAgICBmdW5jdGlvbihQb2xpY3lJZ25v
cmUpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBQ
b2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93
bmxvYWRJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczMywxMiArMjczMywxMiBAQCB2
b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChQQUw6OlNlc3Npb25JCiAgICAgbV9wYWdlLT5zZXRT
ZXNzaW9uSUQoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3Qg
cG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmIGRv
d25sb2FkSUQpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmIGRvd25sb2FkSUQpCiB7
CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUo
ZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5k
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0
aW9uPihwb2xpY3lBY3Rpb24pLCBuYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpOworICAgIGZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uLCBuYXZp
Z2F0aW9uSUQsIGRvd25sb2FkSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNvbnRpbnVlV2lsbFN1
Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIyMjQ3
MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
UHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIHZv
aWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCi0gICAg
dm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IERvd25sb2FkSUQmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYpOwogICAgIHZvaWQg
Y29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5l
cklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNl
dEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRlUG9saWNp
ZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2llcykKLSAgICBE
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktp
dDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBlbnVtIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3du
bG9hZElEIGRvd25sb2FkSUQpCiAgICAgQ29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQogCiAgICAgQ2xlYXJTZWxlY3Rpb24oKQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNDcyKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTctMDktMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNYWtlIFBvbGljeUFjdGlvbiBhbiBlbmNvZGFibGUgZW51bSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250YWlu
ZXJDaGVjayBfY29udGludWVXaXRoUG9saWN5Ol0pOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250
YWluZXJDaGVjayBfaXNGb3JiaWRkZW5GaWxlTG9hZF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBp
Z25vcmVdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBkb3dubG9hZF0pOgor
ICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIHVzZV0pOgorICAgICAgICAoLVtXZWJG
cmFtZVBvbGljeUxpc3RlbmVyIGNvbnRpbnVlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQb2xp
Y3lEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciB1c2Vd
KToKKyAgICAgICAgKC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBpZ25vcmVdKToKKyAgICAg
ICAgKC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBkb3dubG9hZF0pOgorCiAyMDE3LTA5LTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
U3RvcCB1c2luZyBQb2xpY3lDYWxsYmFjawpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCShyZXZp
c2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdp
bkNvbnRhaW5lckNoZWNrLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5IEBAIC0gKHZv
aWQpZGVhbGxvYwogLSAodm9pZClfY29udGludWVXaXRoUG9saWN5OihQb2xpY3lBY3Rpb24pcG9s
aWN5CiB7CiAgICAgaWYgKF9jb250ZXh0SW5mbykKLSAgICAgICAgd3RmT2JqY01zZ1NlbmQ8dm9p
ZD4oX3Jlc3VsdE9iamVjdCwgX3Jlc3VsdFNlbGVjdG9yLCAocG9saWN5ID09IFBvbGljeVVzZSks
IF9jb250ZXh0SW5mbyk7CisgICAgICAgIHd0Zk9iamNNc2dTZW5kPHZvaWQ+KF9yZXN1bHRPYmpl
Y3QsIF9yZXN1bHRTZWxlY3RvciwgKHBvbGljeSA9PSBQb2xpY3lBY3Rpb246OlVzZSksIF9jb250
ZXh0SW5mbyk7CiAgICAgZWxzZSAgICAgCi0gICAgICAgIHd0Zk9iamNNc2dTZW5kPHZvaWQ+KF9y
ZXN1bHRPYmplY3QsIF9yZXN1bHRTZWxlY3RvciwgKHBvbGljeSA9PSBQb2xpY3lVc2UpKTsKKyAg
ICAgICAgd3RmT2JqY01zZ1NlbmQ8dm9pZD4oX3Jlc3VsdE9iamVjdCwgX3Jlc3VsdFNlbGVjdG9y
LCAocG9saWN5ID09IFBvbGljeUFjdGlvbjo6VXNlKSk7CiAKICAgICAvLyB0aGlzIHdpbGwgY2Fs
bCBpbmRpcmVjdGx5IGNhbGwgY2FuY2VsCiAgICAgW19jb250cm9sbGVyIF93ZWJQbHVnaW5Db250
YWluZXJDYW5jZWxDaGVja0lmQWxsb3dlZFRvTG9hZFJlcXVlc3Q6c2VsZl07CkBAIC0xMDAsNyAr
MTAwLDcgQEAgLSAoQk9PTClfaXNGb3JiaWRkZW5GaWxlTG9hZAogICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtfY29udHJvbGxlciB3ZWJGcmFtZV0pOwogICAgIEFTU0VSVChjb3JlRnJhbWUp
OwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRp
c3BsYXkoW19yZXF1ZXN0IFVSTF0pKSB7Ci0gICAgICAgIFtzZWxmIF9jb250aW51ZVdpdGhQb2xp
Y3k6UG9saWN5SWdub3JlXTsKKyAgICAgICAgW3NlbGYgX2NvbnRpbnVlV2l0aFBvbGljeTpQb2xp
Y3lBY3Rpb246Oklnbm9yZV07CiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjIyNDcyKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI0MTAsNyArMjQxMCw3IEBAIC0gKHZvaWQpaW52YWxpZGF0ZQogewog
ICAgIF9mcmFtZSA9IG51bGxwdHI7CiAgICAgaWYgKGF1dG8gcG9saWN5RnVuY3Rpb24gPSBzdGQ6
OmV4Y2hhbmdlKF9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0cikpCi0gICAgICAgIHBvbGljeUZ1bmN0
aW9uKFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6
SWdub3JlKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCkBAIC0yNDMzLDEyICsyNDMzLDEyIEBAIC0g
KHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjooUG9saWN5QWMKIAogLSAodm9pZClpZ25vcmUK
IHsKLSAgICBbc2VsZiByZWNlaXZlZFBvbGljeURlY2lzaW9uOlBvbGljeUlnbm9yZV07CisgICAg
W3NlbGYgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpQb2xpY3lBY3Rpb246Oklnbm9yZV07CiB9CiAK
IC0gKHZvaWQpZG93bmxvYWQKIHsKLSAgICBbc2VsZiByZWNlaXZlZFBvbGljeURlY2lzaW9uOlBv
bGljeURvd25sb2FkXTsKKyAgICBbc2VsZiByZWNlaXZlZFBvbGljeURlY2lzaW9uOlBvbGljeUFj
dGlvbjo6RG93bmxvYWRdOwogfQogCiAtICh2b2lkKXVzZQpAQCAtMjQ1MCwxOSArMjQ1MCwxOSBA
QCAtICh2b2lkKXVzZQogICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAg
ICAgICAgICBbc2VsZiByZWNlaXZlZFBvbGljeURlY2lzaW9uOlBvbGljeUlnbm9yZV07CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBbc2VsZiByZWNlaXZlZFBvbGlj
eURlY2lzaW9uOlBvbGljeVVzZV07CisgICAgICAgICAgICAgICAgICAgIFtzZWxmIHJlY2VpdmVk
UG9saWN5RGVjaXNpb246UG9saWN5QWN0aW9uOjpVc2VdOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH1dOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBbc2VsZiByZWNl
aXZlZFBvbGljeURlY2lzaW9uOlBvbGljeVVzZV07CisgICAgW3NlbGYgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbjpQb2xpY3lBY3Rpb246OlVzZV07CiB9CiAKIC0gKHZvaWQpY29udGludWUKIHsKLSAg
ICBbc2VsZiByZWNlaXZlZFBvbGljeURlY2lzaW9uOlBvbGljeVVzZV07CisgICAgW3NlbGYgcmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbjpQb2xpY3lBY3Rpb246OlVzZV07CiB9CiAKIEBlbmQKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxl
Z2F0ZS5tbQkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE3ICsxMDUs
MTcgQEAgLSAodm9pZClfaW52YWxpZGF0ZQogCiAtICh2b2lkKXVzZQogewotICAgIFtzZWxmIF91
c2VQb2xpY3k6UG9saWN5VXNlXTsKKyAgICBbc2VsZiBfdXNlUG9saWN5OlBvbGljeUFjdGlvbjo6
VXNlXTsKIH0KIAogLSAodm9pZClpZ25vcmUKIHsKLSAgICBbc2VsZiBfdXNlUG9saWN5OlBvbGlj
eUlnbm9yZV07CisgICAgW3NlbGYgX3VzZVBvbGljeTpQb2xpY3lBY3Rpb246Oklnbm9yZV07CiB9
CiAKIC0gKHZvaWQpZG93bmxvYWQKIHsKLSAgICBbc2VsZiBfdXNlUG9saWN5OlBvbGljeURvd25s
b2FkXTsKKyAgICBbc2VsZiBfdXNlUG9saWN5OlBvbGljeUFjdGlvbjo6RG93bmxvYWRdOwogfQog
CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI0NzEp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAxNy0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgUG9saWN5QWN0aW9uIGFuIGVuY29kYWJsZSBl
bnVtIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzc0ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OnVzZSk6CisgICAg
ICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyOjppZ25vcmUpOgorICAgICAgICAoV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6Y29udGludWVTdWJtaXQpOgorCiAyMDE3LTA5LTA3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBmYXN0L2NhbnZhcy8yZC5nZXRQYXRoLm1v
ZGlmaWNhdGlvbi5odG1sIGlzIGZhaWxpbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjIyNDcxKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDE5ICs5MywxOSBAQCBVTE9ORyBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp1c2UoKQog
ewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5VXNlKTsKKyAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAog
SFJFU1VMVCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpkb3dubG9hZCgpCiB7Ci0gICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lEb3dubG9hZCk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb246OkRvd25sb2FkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJF
U1VMVCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjppZ25vcmUoKQogewotICAgIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oUG9saWN5SWdub3JlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbjo6SWdub3JlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTEzLDcgKzEx
Myw3IEBAIEhSRVNVTFQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6aWdub3JlKCkKIAogSFJFU1VM
VCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjb250aW51ZVN1Ym1pdCgpCiB7Ci0gICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lVc2UpOworICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uOjpVc2UpOwogICAgIHJldHVybiBTX09LOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyNyw3ICs1MjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkCiAgICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9s
aWN5Rm9yTUlNRVR5cGUod2ViVmlldywgQlN0cmluZyhyZXNwb25zZS5taW1lVHlwZSgpKSwgdXJs
UmVxdWVzdC5nZXQoKSwgbV93ZWJGcmFtZSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1
bmN0aW9uKSkuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wb2xpY3lMaXN0ZW5l
clByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24oUG9saWN5VXNlKTsKKyAgICBtX3BvbGljeUxpc3Rl
bmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgaWYgKFNVQ0NFRURF
RChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlZpZXcs
IGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1cmxSZXF1ZXN0LmdldCgpLCBCU3RyaW5nKGZyYW1l
TmFtZSksIHNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpLmdldCgpKSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1
bmN0aW9uKFBvbGljeVVzZSk7CisgICAgbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5
RnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2ws
IEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCkBA
IC01NjUsNyArNTY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZAogICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0KCksIHVybFJlcXVlc3Qu
Z2V0KCksIG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikp
LmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRl
LT5tX3BvbGljeUZ1bmN0aW9uKFBvbGljeVVzZSk7CisgICAgbV9wb2xpY3lMaXN0ZW5lclByaXZh
dGUtPm1fcG9saWN5RnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321795</attachid>
            <date>2017-09-25 22:28:53 -0700</date>
            <delta_ts>2017-09-25 22:51:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177480-20170925222852.patch</filename>
            <type>text/plain</type>
            <size>42072</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA5LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBQb2xp
Y3lBY3Rpb24gYW4gZW5jb2RhYmxlIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzQ4MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFu
dHRpIEtvaXZpc3RvLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKiBsb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOZXdXaW5kb3dQb2xpY3kpOgorCiAyMDE3LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBBdHRyaWJ1dGUgYW4gZW51bSBj
bGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZp
c2lvbiAyMjI0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OTUsMTQgKzY5NSwxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpyZXNwb25zZVJlY2VpdmVkKGNvCiAKICAgICAvLyBBbHdheXMgc2hvdyBjb250ZW50IHdpdGgg
dmFsaWQgc3Vic3RpdHV0ZSBkYXRhLgogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkgewotICAgICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lVc2UpOworICAg
ICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICNpZiBFTkFCTEUoRlRQRElSKQogICAgIC8vIFJlc3BlY3Qg
dGhlIGhpZGRlbiBGVFAgRGlyZWN0b3J5IExpc3RpbmcgcHJlZiBzbyBpdCBjYW4gYmUgdGVzdGVk
IGV2ZW4gaWYgdGhlIHBvbGljeSBkZWxlZ2F0ZSBtaWdodCBvdGhlcndpc2UgZGlzYWxsb3cgaXQK
ICAgICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKS5mb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKCkg
JiYgbV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3Rvcnki
KSB7Ci0gICAgICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeVVzZSk7CisgICAg
ICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNzQ3LDcgKzc0Nyw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgc3dp
dGNoIChwb2xpY3kpIHsKLSAgICBjYXNlIFBvbGljeVVzZTogeworICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpVc2U6IHsKICAgICAgICAgLy8gUHJldmVudCByZW1vdGUgd2ViIGFyY2hpdmVzIGZyb20g
bG9hZGluZyBiZWNhdXNlIHRoZXkgY2FuIGNsYWltIHRvIGJlIGZyb20gYW55IGRvbWFpbiBhbmQg
dGh1cyBhdm9pZCBjcm9zcy1kb21haW4gc2VjdXJpdHkgY2hlY2tzICg0MTIwMjU1KS4KICAgICAg
ICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGUobV9yZXNwb25z
ZS5taW1lVHlwZSgpKSB8fCBpc1JlbW90ZVdlYkFyY2hpdmUoKnRoaXMpKSB7CiAgICAgICAgICAg
ICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2Fubm90U2hvd01JTUVUeXBlKG1fcmVz
cG9uc2UpOwpAQCAtNzU4LDcgKzc1OCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVl
QWZ0ZXJDb250ZW4KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBQb2xpY3lEb3du
bG9hZDogeworICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3dubG9hZDogewogICAgICAgICAvLyBt
X21haW5SZXNvdXJjZSBjYW4gYmUgbnVsbCwgZS5nLiB3aGVuIGxvYWRpbmcgYSBzdWJzdGl0dXRl
IHJlc291cmNlIGZyb20gYXBwbGljYXRpb24gY2FjaGUuCiAgICAgICAgIGlmICghbV9tYWluUmVz
b3VyY2UpIHsKICAgICAgICAgICAgIG1haW5SZWNlaXZlZEVycm9yKGZyYW1lTG9hZGVyKCktPmNs
aWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihtX3JlcXVlc3QpKTsKQEAgLTc4Nyw3ICs3ODcsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVuCiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxSZXNvdXJjZUxvYWRlcio+KG1haW5SZXNvdXJjZUxvYWRlcigpKS0+ZGlkRmFp
bChpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGNhc2UgUG9saWN5SWdub3JlOgorICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25v
cmU6CiAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gdGhp
cy0+bWFpblJlc291cmNlTG9hZGVyKCkpCiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZSgqbV9mcmFtZSwgbWFpblJlc291cmNlTG9h
ZGVyLT5pZGVudGlmaWVyKCksICp0aGlzLCBtX3Jlc3BvbnNlKTsKICAgICAgICAgc3RvcExvYWRp
bmdGb3JQb2xpY3lDaGFuZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyVHlwZXMuaAkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIGVudW0g
RnJhbWVTdGF0ZSB7CiAgICAgRnJhbWVTdGF0ZUNvbXBsZXRlCiB9OwogCi1lbnVtIFBvbGljeUFj
dGlvbiB7Ci0gICAgUG9saWN5VXNlLAotICAgIFBvbGljeURvd25sb2FkLAotICAgIFBvbGljeUln
bm9yZQorZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24geworICAgIFVzZSwKKyAgICBEb3dubG9hZCwK
KyAgICBJZ25vcmUKIH07CiAKIGVudW0gY2xhc3MgUmVsb2FkT3B0aW9uIHsKQEAgLTE0NywzICsx
NDcsMTkgQEAgZW51bSBjbGFzcyBIYXNJbnNlY3VyZUNvbnRlbnQgewogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBFbnVtVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWUgRSwgRS4uLj4gc3RydWN0IEVudW1W
YWx1ZXM7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UG9saWN5QWN0
aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
UG9saWN5QWN0aW9uLAorICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlVzZSwKKyAgICAg
ICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpEb3dubG9hZCwKKyAgICAgICAgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyMjI0NzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NiwxMyArMTQ2LDEzIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWMKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdENvcHkgPSByZXF1ZXN0OwogICAg
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIGZv
cm1TdGF0ZSwgW3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3RDb3B5KSwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBz
dWdnZXN0ZWRGaWxlbmFtZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24p
IHsKLSAgICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDoKKyAgICAgICAgY2FzZSBQb2xpY3lBY3Rp
b246OkRvd25sb2FkOgogICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5zZXRPcmlnaW5hbFVS
TEZvckRvd25sb2FkUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAgIG1fZnJhbWUubG9hZGVy
KCkuY2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAg
ICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgY2FzZSBQb2xpY3lJZ25vcmU6CisgICAg
ICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCBmYWxzZSk7Ci0gICAgICAgIGNhc2UgUG9saWN5VXNlOgorICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRl
cigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAg
ICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5j
YW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKQEAgLTE3NCwxMyArMTc0LDEzIEBAIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kKIAogICAgIG1fZnJhbWUubG9hZGVyKCku
Y2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlv
bkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYo
bV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9ybVN0YXRlKSwgZnJh
bWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoIChwb2xp
Y3lBY3Rpb24pIHsKLSAgICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDoKKyAgICAgICAgY2FzZSBQ
b2xpY3lBY3Rpb246OkRvd25sb2FkOgogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCk7CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAg
ICAgICAgY2FzZSBQb2xpY3lJZ25vcmU6CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25v
cmU6CiAgICAgICAgICAgICBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBmYWxzZSk7
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgUG9saWN5VXNlOgorICAgICAgICBj
YXNlIFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgZm9y
bVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIHRydWUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNDg5KQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBA
QAorMjAxNy0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1ha2UgUG9saWN5QWN0aW9uIGFuIGVuY29kYWJsZSBlbnVtIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBp
bmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TmV0d29ya0RhdGFUYXNrUmVwbGF5OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgICh0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6bmF2aWdhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6
dXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojpkb3du
bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6aWdu
b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0wOS0yNSAgRnJlZGVyaWsgUmllZGVsICA8cmllZGVsQGFw
cGxlLmNvbT4KIAogICAgICAgICBFeHBvc2Ugd2F5IHRvIHNldCB2YWx1ZXMgb2YgY2xhc3NpZmll
ZCBmb3JtIGNvbnRyb2xzIGFzIHtMZWdhY3kgV2ViS2l0LCBXZWJLaXR9IFNQSQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpk
aWRSZWMKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2VO
ZXR3b3JrU2Vzc2lvbiIpOwogICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlBvbGljeVVzZSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAgICAgYXV0byB1
cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUlnbm9yZSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcih7IFN0cmluZygpLCAwLCB1cmwsICJD
YW5jZWxsZWQgbG9hZCBmcm9tICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpICsgIicgYmVjYXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTUsMTMgKzMxNSwxMyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlk
UmVjCiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewotICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6UG9saWN5VXNlOgorICAgICAgICBjYXNlIFBvbGljeUFjdGlv
bjo6VXNlOgogICAgICAgICAgICAgbV9idWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwogICAgICAg
ICAgICAgcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpQb2xpY3lJZ25vcmU6CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlBvbGljeURvd25s
b2FkOgorICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBk
b3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMjI0NzEp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
ICAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBtX3Jlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIoUG9saWN5SWdub3JlKTsKKyAgICAgICAgbV9yZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICBpZiAobV9yZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKQogICAgICAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3AKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsK
ICAgICAgICAgYXV0byByZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZSht
X3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgICAgICByZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKFBvbGljeVVzZSk7CisgICAgICAgIHJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogICAgIH0KICNlbHNlCiAgICAgaWYgKG1faGFuZGxl
KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVS
ZXNwb24KICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5VXNlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVz
ZSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdAogdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24gLSBodHRw
U3RhdHVzQ29kZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgIGRpZEZpbmlzaCgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNp
ZGVQZW5kCiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxv
YWRJRCkpOwogCiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oZGVzdGluYXRpb24sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRl
KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5RG93bmxvYWQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OkRvd25sb2FkKTsKICAgICAgICAgaWYgKG5l
dHdvcmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDYW5jZWxp
bmcgfHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6
OkNvbXBsZXRlZCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTk2LDcgKzE5Niw3IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3cKICAgICAgICAgQVNTRVJUKGNv
bXBsZXRpb25IYW5kbGVyKTsKIAogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmNhbmNlbCgpOwot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lJZ25vcmUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgIG1fY2xpZW50LnBlbmRp
bmdEb3dubG9hZENhbmNlbGVkKGRvd25sb2FkSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtEYXRhVGFz
a1JlcGxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtEYXRhVGFza1JlcGxheS5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksMTMgKzI0OSwxMyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza1JlcGxheTo6ZGlkUmVjZWl2ZVJlCiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKHBv
bGljeUFjdGlvbikgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6UG9saWN5
VXNlOgorICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAg
ICAgZW5xdWV1ZUV2ZW50SGFuZGxlcigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmU6CisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICBjb21wbGV0ZSgpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xp
Y3lEb3dubG9hZDoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OkRvd25sb2Fk
OgogICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBv
bGljeURvd25sb2FkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMSArNTcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHN0YXRpYyBOU1VSTFNlc3Np
b25SZXNwb25zZURpc3Bvc2l0aW9uIHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24gZGlzcG9zaXRpb24pCiB7CiAgICAgc3dpdGNoIChkaXNwb3Np
dGlvbikgewotICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmU6Cisg
ICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgcmV0dXJuIE5T
VVJMU2Vzc2lvblJlc3BvbnNlQ2FuY2VsOwotICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9u
OjpQb2xpY3lVc2U6CisgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlVzZToKICAgICAg
ICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJlc3BvbnNlQWxsb3c7Ci0gICAgY2FzZSBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb246OlBvbGljeURvd25sb2FkOgorICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0
aW9uOjpEb3dubG9hZDoKICAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJlc3BvbnNlQmVjb21l
RG93bmxvYWQ7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkocmV2aXNpb24gMjIy
NDcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpkaXNwYXRjaERpZFJlYwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNo
IChwb2xpY3lBY3Rpb24pIHsKLSAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlBvbGljeVVzZToK
KyAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlVzZToKICAgICAgICAgICAgIGlmIChtX2lucHV0
U3RyZWFtKQogICAgICAgICAgICAgICAgIHJlYWQoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG1f
bXVsdGlwYXJ0SW5wdXRTdHJlYW0pCkBAIC0zODYsMTAgKzM4NiwxMCBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmRpc3BhdGNoRGlkUmVjCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBvbGljeUFjdGlv
bjo6UG9saWN5SWdub3JlOgorICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6SWdub3JlOgogICAg
ICAgICAgICAgY2xlYXJSZXF1ZXN0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQb2xpY3lBY3Rpb246OlBvbGljeURvd25sb2FkOgorICAgICAgICBjYXNlIFBvbGljeUFjdGlv
bjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBkb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzg3LDYgKzM4Nyw3IEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyciV2ViRXZl
bnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2ZW50Lmgi
J10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAor
ICAgICAgICAnV2ViQ29yZTo6UG9saWN5QWN0aW9uJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsn
IldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0
IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlckRhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCIn
XSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVu
ZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZvcm1T
dWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksOCArMjksNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2Vi
RnJhbWVQcm94eTsKLQogY2xhc3MgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5IDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Rm9ybVN1Ym1pc3Npb25MaXN0
ZW5lcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5PiBjcmVhdGUoV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5l
clByb3h5LmgJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lTGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEKCkg
Y29uc3QgeyByZXR1cm4gbV9saXN0ZW5lcklEOyB9CiAKLSAgICBBUEk6Ok5hdmlnYXRpb24qIG5h
dmlnYXRpb24oKSB7IHJldHVybiBtX25hdmlnYXRpb24uZ2V0KCk7IH0KICAgICB2b2lkIHNldE5h
dmlnYXRpb24oUmVmPEFQSTo6TmF2aWdhdGlvbj4mJiBuYXZpZ2F0aW9uKSB7IG1fbmF2aWdhdGlv
biA9IFdURk1vdmUobmF2aWdhdGlvbik7IH0KIAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
Y3BwCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNyArMzgsMTcg
QEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpXZWJGcmFtZVBvbAogCiB2b2lkIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eTo6dXNlKGNvbnN0IFdlYnNpdGVQb2xpY2llcyYgd2Vic2l0
ZVBvbGljaWVzKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
VXNlLCB3ZWJzaXRlUG9saWNpZXMpOworICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpVc2UsIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5Ojpkb3dubG9hZCgpCiB7Ci0gICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lEb3dubG9hZCwgeyB9KTsKKyAgICByZWNlaXZlZFBvbGlj
eURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6RG93bmxvYWQsIHsgfSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjppZ25vcmUoKQogewotICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5SWdub3JlLCB7IH0pOworICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsIHsgfSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjY0LDE2ICsyMjY0LDE2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KIAogICAgIGF1dG8gdHJh
bnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIGlmIChhY3Rp
b24gPT0gUG9saWN5SWdub3JlKQorICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpJZ25v
cmUpCiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJMKHRy
YW5zYWN0aW9uKTsKIAogI2lmIEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpCi0gICAgaWYgKG1f
c3luY05hdmlnYXRpb25BY3Rpb25IYXNEb3dubG9hZEF0dHJpYnV0ZSAmJiBhY3Rpb24gPT0gUG9s
aWN5VXNlKQotICAgICAgICBhY3Rpb24gPSBQb2xpY3lEb3dubG9hZDsKKyAgICBpZiAobV9zeW5j
TmF2aWdhdGlvbkFjdGlvbkhhc0Rvd25sb2FkQXR0cmlidXRlICYmIGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OlVzZSkKKyAgICAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9uOjpEb3dubG9hZDsKICNl
bmRpZgogCiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEID0geyB9OwotICAgIGlmIChhY3Rpb24g
PT0gUG9saWN5RG93bmxvYWQpIHsKKyAgICBpZiAoYWN0aW9uID09IFBvbGljeUFjdGlvbjo6RG93
bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAgIGF1
dG8qIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURvd25sb2FkUHJv
eHkobV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMpOwogICAgICAgICBpZiAo
bmF2aWdhdGlvbikgewpAQCAtMzY4Niw3ICszNjg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAg
IGlmIChmcmFtZS0+ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVl
c3QpKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKG1fbmV3TmF2aWdhdGlvbklELCBQb2xpY3lJZ25v
cmUsIHsgfSwgeyB9KTsKKyAgICAgICAgcmVwbHktPnNlbmQobV9uZXdOYXZpZ2F0aW9uSUQsIFBv
bGljeUFjdGlvbjo6SWdub3JlLCB7IH0sIHsgfSk7CiAgICAgICAgIG1fbmV3TmF2aWdhdGlvbklE
ID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjQ3MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtOTgsOCArOTgsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2Vu
ZGlmCiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwotICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNl
U3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKSAtPiAodWludDY0X3QgcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCkgRGVsYXllZAotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0
OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAodWludDY0X3QgbmV3TmF2aWdhdGlvbklELCB1aW50
NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdHJ1Y3Qg
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCisgICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChlbnVtIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKSBEZWxh
eWVkCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpIC0+ICh1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0cnVjdCBX
ZWJLaXQ6OldlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXMpIERlbGF5ZWQKICAgICBEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAyMjI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nzks
MTIgKzY3OSwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiB7
CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBh
Z2UpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKKyAgICAgICAgZnVuY3Rpb24o
UG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KCFyZXF1ZXN0LnVybCgpLnN0cmluZygpKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7
CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjkzLDMzICs2OTMsMzMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1
bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xp
Y3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1lLCByZXNw
b25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdl
UG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CisgICAgICAg
IGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlID0gd2ViUGFnZS0+Y2FuU2hvd01JTUVUeXBlKHJlc3Bv
bnNlLm1pbWVUeXBlKCkpOwogCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNl
dFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IHBvbGlj
eUFjdGlvbjsKKyAgICBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uOwogICAgIERvd25sb2FkSUQg
ZG93bmxvYWRJRDsKIAogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7CiAgICAg
V2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1
dG8gbmF2aWdhdGlvbklEID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqY29yZUZy
YW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpLm5hdmlnYXRpb25JRCgp
OwogICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVx
dWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6
OlJlcGx5KHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCksIFNlY29uZHM6OmluZmluaXR5KCksIElQ
Qzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKSkgewot
ICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9s
aWN5SWdub3JlLCAwLCB7IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNh
dXNlIENGTmV0d29yayBjYW4gb25seSBjb252ZXJ0IGEgbG9hZGluZyBjb25uZWN0aW9uIHRvIGEg
ZG93bmxvYWQgZnJvbSBpdHMgZGlkUmVjZWl2ZVJlc3BvbnNlIGNhbGxiYWNrLgotICAgIG1fZnJh
bWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xp
Y3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIDAsIGRvd25sb2FkSUQpOworICAgIG1fZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIDAsIGRvd25s
b2FkSUQpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9u
QWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0
aW9uKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYg
KCF3ZWJQYWdlKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7CisgICAgICAgIGZ1
bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNzMwLDcgKzczMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWQKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9s
aWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCku
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5n
ZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBX
S0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5VXNl
KTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03NTUsMTMgKzc1NSwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKICAgICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsK
KyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgLy8gQWx3YXlzIGlnbm9yZSByZXF1ZXN0cyB3aXRoIGVtcHR5IFVSTHMu
IAogICAgIGlmIChyZXF1ZXN0LmlzRW1wdHkoKSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lJ
Z25vcmUpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTc3MiwxMyArNzcyLDEzIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQu
CiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih3ZWJQ
YWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIHVzZXJEYXRhKTsKICAgICBpZiAo
cG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICBmdW5jdGlv
bihQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJh
bWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIHVpbnQ2NF90
IG5ld05hdmlnYXRpb25JRDsKLSAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247CisgICAgUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbjsKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAKICAgICBB
U1NFUlQobmF2aWdhdGlvbkFjdGlvbi5zb3VyY2VEb2N1bWVudCgpKTsKQEAgLTgxOCw3ICs4MTgs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgUmVmPFdl
YkZyYW1lPiBwcm90ZWN0KCptX2ZyYW1lKTsKICAgICBXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZVBv
bGljaWVzOwogICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgb3JpZ2luYXRpbmdGcmFtZSAmJiBvcmlnaW5hdGluZ0ZyYW1lLT5wYWdlKCkgPyBvcmln
aW5hdGluZ0ZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpIDogMCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNv
dXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjo6UmVwbHkobmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdl
YnNpdGVQb2xpY2llcykpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lJZ25vcmUsIDAsIHsgfSk7CisgICAgICAgIG1fZnJhbWUt
PmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgMCwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODU1LDcgKzg1NSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICB9CiAKICAgICAv
LyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fubm90IGdyYWNl
ZnVsbHkgaGFuZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMgbmF2aWdhdGlv
biBwb2xpY3kgcmVwbHkuCi0gICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmV3TmF2
aWdhdGlvbklELCBkb3dubG9hZElEKTsKKyAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24obGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2Fk
SUQpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CShyZXZpc2lvbiAyMjI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFdlYkZy
YW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0g
eyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7CiAgICAgaWYgKGF1dG8gZnVuY3Rpb24g
PSBzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAgICBmdW5j
dGlvbihQb2xpY3lJZ25vcmUpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9y
ZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRf
dCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IERvd25sb2FkSUQgZG93bmxvYWRJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczMywx
MiArMjczMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChQQUw6OlNlc3Npb25JCiAg
ICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpk
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IERvd25sb2FkSUQmIGRvd25sb2FkSUQpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQm
IGRvd25sb2FkSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwotICAgIGZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGlj
X2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBuYXZpZ2F0aW9uSUQsIGRvd25sb2Fk
SUQpOworICAgIGZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9s
aWN5QWN0aW9uLCBuYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVu
ZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJ
RCYpOwogICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsx
NTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRSZW1v
dmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRh
dGVXZWJzaXRlUG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQ
b2xpY2llcykKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQorICAgIERpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBlbnVt
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCiAgICAgQ29udGludWVXaWxsU3VibWl0
Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQogCiAgICAgQ2xlYXJT
ZWxlY3Rpb24oKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjIy
NDcyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMDktMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFBvbGljeUFjdGlvbiBhbiBlbmNvZGFi
bGUgZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3NDgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAg
ICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgorICAgICAgICAoLVtX
ZWJQbHVnaW5Db250YWluZXJDaGVjayBfY29udGludWVXaXRoUG9saWN5Ol0pOgorICAgICAgICAo
LVtXZWJQbHVnaW5Db250YWluZXJDaGVjayBfaXNGb3JiaWRkZW5GaWxlTG9hZF0pOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lciBpZ25vcmVdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
ciBkb3dubG9hZF0pOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIHVzZV0pOgor
ICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGNvbnRpbnVlXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViUG9saWN5RGVjaXNp
b25MaXN0ZW5lciB1c2VdKToKKyAgICAgICAgKC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBp
Z25vcmVdKToKKyAgICAgICAgKC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBkb3dubG9hZF0p
OgorCiAyMDE3LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgU3RvcCB1c2luZyBQb2xpY3lDYWxsYmFjawpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5l
ckNoZWNrLm1tCShyZXZpc2lvbiAyMjI0NzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5
ICs4Nyw5IEBAIC0gKHZvaWQpZGVhbGxvYwogLSAodm9pZClfY29udGludWVXaXRoUG9saWN5OihQ
b2xpY3lBY3Rpb24pcG9saWN5CiB7CiAgICAgaWYgKF9jb250ZXh0SW5mbykKLSAgICAgICAgd3Rm
T2JqY01zZ1NlbmQ8dm9pZD4oX3Jlc3VsdE9iamVjdCwgX3Jlc3VsdFNlbGVjdG9yLCAocG9saWN5
ID09IFBvbGljeVVzZSksIF9jb250ZXh0SW5mbyk7CisgICAgICAgIHd0Zk9iamNNc2dTZW5kPHZv
aWQ+KF9yZXN1bHRPYmplY3QsIF9yZXN1bHRTZWxlY3RvciwgKHBvbGljeSA9PSBQb2xpY3lBY3Rp
b246OlVzZSksIF9jb250ZXh0SW5mbyk7CiAgICAgZWxzZSAgICAgCi0gICAgICAgIHd0Zk9iamNN
c2dTZW5kPHZvaWQ+KF9yZXN1bHRPYmplY3QsIF9yZXN1bHRTZWxlY3RvciwgKHBvbGljeSA9PSBQ
b2xpY3lVc2UpKTsKKyAgICAgICAgd3RmT2JqY01zZ1NlbmQ8dm9pZD4oX3Jlc3VsdE9iamVjdCwg
X3Jlc3VsdFNlbGVjdG9yLCAocG9saWN5ID09IFBvbGljeUFjdGlvbjo6VXNlKSk7CiAKICAgICAv
LyB0aGlzIHdpbGwgY2FsbCBpbmRpcmVjdGx5IGNhbGwgY2FuY2VsCiAgICAgW19jb250cm9sbGVy
IF93ZWJQbHVnaW5Db250YWluZXJDYW5jZWxDaGVja0lmQWxsb3dlZFRvTG9hZFJlcXVlc3Q6c2Vs
Zl07CkBAIC0xMDAsNyArMTAwLDcgQEAgLSAoQk9PTClfaXNGb3JiaWRkZW5GaWxlTG9hZAogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtfY29udHJvbGxlciB3ZWJGcmFtZV0pOwogICAgIEFT
U0VSVChjb3JlRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLmNhbkRpc3BsYXkoW19yZXF1ZXN0IFVSTF0pKSB7Ci0gICAgICAgIFtzZWxmIF9j
b250aW51ZVdpdGhQb2xpY3k6UG9saWN5SWdub3JlXTsKKyAgICAgICAgW3NlbGYgX2NvbnRpbnVl
V2l0aFBvbGljeTpQb2xpY3lBY3Rpb246Oklnbm9yZV07CiAgICAgICAgIHJldHVybiBZRVM7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjIyNDcy
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MTAsNyArMjQxMCw3IEBAIC0gKHZvaWQp
aW52YWxpZGF0ZQogewogICAgIF9mcmFtZSA9IG51bGxwdHI7CiAgICAgaWYgKGF1dG8gcG9saWN5
RnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKF9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0cikpCi0gICAg
ICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9u
KFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCkBAIC0yNDMzLDEy
ICsyNDMzLDEyIEBAIC0gKHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjooUG9saWN5QWMKIAog
LSAodm9pZClpZ25vcmUKIHsKLSAgICBbc2VsZiByZWNlaXZlZFBvbGljeURlY2lzaW9uOlBvbGlj
eUlnbm9yZV07CisgICAgW3NlbGYgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpQb2xpY3lBY3Rpb246
Oklnbm9yZV07CiB9CiAKIC0gKHZvaWQpZG93bmxvYWQKIHsKLSAgICBbc2VsZiByZWNlaXZlZFBv
bGljeURlY2lzaW9uOlBvbGljeURvd25sb2FkXTsKKyAgICBbc2VsZiByZWNlaXZlZFBvbGljeURl
Y2lzaW9uOlBvbGljeUFjdGlvbjo6RG93bmxvYWRdOwogfQogCiAtICh2b2lkKXVzZQpAQCAtMjQ0
OCwyMSArMjQ0OCwyMSBAQCAtICh2b2lkKXVzZQogICAgICAgICBbTFNBcHBMaW5rIG9wZW5XaXRo
VVJMOl9hcHBMaW5rVVJMLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICopIHsKICAgICAgICAgICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICAgICAgICAg
IGlmIChzdWNjZXNzKQotICAgICAgICAgICAgICAgICAgICBbc2VsZiByZWNlaXZlZFBvbGljeURl
Y2lzaW9uOlBvbGljeUlnbm9yZV07CisgICAgICAgICAgICAgICAgICAgIFtzZWxmIHJlY2VpdmVk
UG9saWN5RGVjaXNpb246UG9saWN5QWN0aW9uOjpJZ25vcmVdOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgW3NlbGYgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpQb2xp
Y3lVc2VdOworICAgICAgICAgICAgICAgICAgICBbc2VsZiByZWNlaXZlZFBvbGljeURlY2lzaW9u
OlBvbGljeUFjdGlvbjo6VXNlXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9XTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgW3NlbGYgcmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbjpQb2xpY3lVc2VdOworICAgIFtzZWxmIHJlY2VpdmVkUG9saWN5RGVjaXNpb246UG9saWN5
QWN0aW9uOjpVc2VdOwogfQogCiAtICh2b2lkKWNvbnRpbnVlCiB7Ci0gICAgW3NlbGYgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbjpQb2xpY3lVc2VdOworICAgIFtzZWxmIHJlY2VpdmVkUG9saWN5RGVj
aXNpb246UG9saWN5QWN0aW9uOjpVc2VdOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0JKHJldmlz
aW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5
RGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxNyArMTA1LDE3IEBAIC0gKHZvaWQp
X2ludmFsaWRhdGUKIAogLSAodm9pZCl1c2UKIHsKLSAgICBbc2VsZiBfdXNlUG9saWN5OlBvbGlj
eVVzZV07CisgICAgW3NlbGYgX3VzZVBvbGljeTpQb2xpY3lBY3Rpb246OlVzZV07CiB9CiAKIC0g
KHZvaWQpaWdub3JlCiB7Ci0gICAgW3NlbGYgX3VzZVBvbGljeTpQb2xpY3lJZ25vcmVdOworICAg
IFtzZWxmIF91c2VQb2xpY3k6UG9saWN5QWN0aW9uOjpJZ25vcmVdOwogfQogCiAtICh2b2lkKWRv
d25sb2FkCiB7Ci0gICAgW3NlbGYgX3VzZVBvbGljeTpQb2xpY3lEb3dubG9hZF07CisgICAgW3Nl
bGYgX3VzZVBvbGljeTpQb2xpY3lBY3Rpb246OkRvd25sb2FkXTsKIH0KIAogQGVuZApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTctMDktMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBNYWtlIFBvbGljeUFjdGlvbiBhbiBlbmNvZGFibGUgZW51bSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp1c2UpOgorICAgICAgICAoV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcjo6ZG93bmxvYWQpOgorICAgICAgICAoV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6aWdub3JlKToKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNvbnRpbnVlU3Vi
bWl0KToKKwogMjAxNy0wOS0wNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dpbl0gZmFzdC9jYW52YXMvMmQuZ2V0UGF0aC5tb2RpZmljYXRpb24uaHRt
bCBpcyBmYWlsaW5nLgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDIyMjQ3MSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MywxOSArOTMsMTkgQEAgVUxPTkcgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6UmVsZWFzZSgp
CiAKIEhSRVNVTFQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6dXNlKCkKIHsKLSAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKFBvbGljeVVzZSk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQ
b2xpY3lBY3Rpb246OlVzZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lcjo6ZG93bmxvYWQoKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24oUG9saWN5RG93bmxvYWQpOworICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uOjpEb3dubG9hZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcjo6aWdub3JlKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBv
bGljeUlnbm9yZSk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBIUkVTVUxU
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6Omlnbm9yZSgpCiAKIEhSRVNVTFQgV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lcjo6Y29udGludWVTdWJtaXQoKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24oUG9saWN5VXNlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6
VXNlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjIyNDcxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MjcsNyArNTI3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAog
ICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lkZVBvbGljeUZvck1JTUVUeXBl
KHdlYlZpZXcsIEJTdHJpbmcocmVzcG9uc2UubWltZVR5cGUoKSksIHVybFJlcXVlc3QuZ2V0KCks
IG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpLmdldCgp
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3Bv
bGljeUZ1bmN0aW9uKFBvbGljeVVzZSk7CisgICAgbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1f
cG9saWN5RnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYgZnVuY3Rpb24pCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdh
dGUtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJWaWV3LCBhY3Rpb25JbmZvcm1h
dGlvbi5nZXQoKSwgdXJsUmVxdWVzdC5nZXQoKSwgQlN0cmluZyhmcmFtZU5hbWUpLCBzZXRVcFBv
bGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKSkpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xpY3lV
c2UpOworICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6VXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sLCBGb3JtU3RhdGUqIGZv
cm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQpAQCAtNTY1LDcgKzU2NSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBpZiAoU1VD
Q0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdl
YlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1cmxSZXF1ZXN0LmdldCgpLCBtX3dlYkZy
YW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKSkpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5j
dGlvbihQb2xpY3lVc2UpOworICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1
bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>