<?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>162532</bug_id>
          
          <creation_ts>2016-09-24 10:04:40 -0700</creation_ts>
          <short_desc>AuthorStyleSheets shouldn&apos;t trigger synchronous style resolutions</short_desc>
          <delta_ts>2016-09-25 06:34:47 -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>CSS</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1233125</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-09-24 10:04:40 -0700</bug_when>
    <thetext>AuthorStyleSheets logic can be simplified. This should be done by the client if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233128</commentid>
    <comment_count>1</comment_count>
      <attachid>289746</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-09-24 10:29:56 -0700</bug_when>
    <thetext>Created attachment 289746
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233131</commentid>
    <comment_count>2</comment_count>
      <attachid>289748</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-09-24 11:50:46 -0700</bug_when>
    <thetext>Created attachment 289748
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233175</commentid>
    <comment_count>3</comment_count>
      <attachid>289748</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-24 17:57:44 -0700</bug_when>
    <thetext>Comment on attachment 289748
patch

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

&gt; Source/WebCore/dom/AuthorStyleSheets.h:66
&gt; +    enum class ChangeType { ActiveSet, ContentsOrInterpretation };
&gt; +    WEBCORE_EXPORT void didChange(ChangeType);

Does this really need to be a single function call with an argument? It’s kind of wordy to call it that way. Maybe we should make this two different named functions. They can share code inside the class and we can use the ChangeType f we find it handy internally, but I suspect there is no real advantage to callers that this is an argument rather than a separate function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233221</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-09-25 04:38:58 -0700</bug_when>
    <thetext>Yeah, that was the plan though you right that I can as well do it in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233222</commentid>
    <comment_count>5</comment_count>
      <attachid>289776</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-09-25 05:25:40 -0700</bug_when>
    <thetext>Created attachment 289776
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233223</commentid>
    <comment_count>6</comment_count>
      <attachid>289776</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-25 06:34:43 -0700</bug_when>
    <thetext>Comment on attachment 289776
patch

Clearing flags on attachment: 289776

Committed r206361: &lt;http://trac.webkit.org/changeset/206361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233224</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-25 06:34:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289746</attachid>
            <date>2016-09-24 10:29:56 -0700</date>
            <delta_ts>2016-09-24 11:50:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>authorstylesheets-didchange-enum-3.patch</filename>
            <type>text/plain</type>
            <size>32175</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDIwNjM1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc5LDExICsxNzksMTEgQEAgdm9pZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlcyhS
dWxlTQogICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRLZXlmcmFtZVN0eWxlKCppbnNlcnRl
ZEtleWZyYW1lc1J1bGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IG93bmVyLT5hdXRob3JTdHlsZVNoZWV0cygpLnNjaGVkdWxlT3B0aW1pemVkVXBkYXRlKCk7Cisg
ICAgICAgIG93bmVyLT5hdXRob3JTdHlsZVNoZWV0cygpLnNjaGVkdWxlQWN0aXZlU2V0Q2hhbmdl
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBvd25lci0+YXV0aG9yU3R5bGVTaGVl
dHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgb3duZXItPmF1dGhvclN0eWxl
U2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50
c09ySW50ZXJwcmV0YXRpb24pOwogCiAgICAgbV9tdXRhdGVkUnVsZXMgPSB0cnVlOwogfQpAQCAt
MTkzLDcgKzE5Myw3IEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6ZGlkTXV0YXRlKCkKICAgICBEb2N1
bWVudCogb3duZXIgPSBvd25lckRvY3VtZW50KCk7CiAgICAgaWYgKCFvd25lcikKICAgICAgICAg
cmV0dXJuOwotICAgIG93bmVyLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJl
Y2FsY1N0eWxlKTsKKyAgICBvd25lci0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0
aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiB9
CiAKIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2xlYXJPd25lck5vZGUoKQpAQCAtMjAyLDcgKzIwMiw3
IEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2xlYXJPd25lck5vZGUoKQogICAgIG1fb3duZXJOb2Rl
ID0gMDsKICAgICBpZiAoIW93bmVyKQogICAgICAgICByZXR1cm47Ci0gICAgb3duZXItPmF1dGhv
clN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGVJZk5lZWRlZCk7CisgICAg
b3duZXItPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpD
aGFuZ2VUeXBlOjpBY3RpdmVTZXQpOwogfQogCiB2b2lkIENTU1N0eWxlU2hlZXQ6OnJlYXR0YWNo
Q2hpbGRSdWxlQ1NTT01XcmFwcGVycygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQXV0aG9y
U3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BdXRob3JT
dHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9B
dXRob3JTdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE0ICs1NywxNCBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBBdXRob3JTdHlsZVNoZWV0czo6QXV0aG9yU3R5
bGVTaGVldHMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
LSAgICAsIG1fb3B0aW1pemVkVXBkYXRlVGltZXIoKnRoaXMsICZBdXRob3JTdHlsZVNoZWV0czo6
b3B0aW1pemVkVXBkYXRlVGltZXJGaXJlZCkKKyAgICAsIG1fcGVuZGluZ0NoYW5nZVRpbWVyKCp0
aGlzLCAmQXV0aG9yU3R5bGVTaGVldHM6OnBlbmRpbmdDaGFuZ2VUaW1lckZpcmVkKQogewogfQog
CiBBdXRob3JTdHlsZVNoZWV0czo6QXV0aG9yU3R5bGVTaGVldHMoU2hhZG93Um9vdCYgc2hhZG93
Um9vdCkKICAgICA6IG1fZG9jdW1lbnQoc2hhZG93Um9vdC5kb2N1bWVudFNjb3BlKCkpCiAgICAg
LCBtX3NoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCi0gICAgLCBtX29wdGltaXplZFVwZGF0ZVRpbWVy
KCp0aGlzLCAmQXV0aG9yU3R5bGVTaGVldHM6Om9wdGltaXplZFVwZGF0ZVRpbWVyRmlyZWQpCisg
ICAgLCBtX3BlbmRpbmdDaGFuZ2VUaW1lcigqdGhpcywgJkF1dGhvclN0eWxlU2hlZXRzOjpwZW5k
aW5nQ2hhbmdlVGltZXJGaXJlZCkKIHsKIH0KIApAQCAtMjEzLDEzICsyMTMsMTMgQEAgdm9pZCBB
dXRob3JTdHlsZVNoZWV0czo6Y29sbGVjdEFjdGl2ZVN0eQogICAgIH0KIH0KIAotQXV0aG9yU3R5
bGVTaGVldHM6OlN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIEF1dGhvclN0eWxlU2hlZXRzOjphbmFs
eXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFnIHVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNGdWxs
U3R5bGVSZWNhbGMpCitBdXRob3JTdHlsZVNoZWV0czo6U3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUg
QXV0aG9yU3R5bGVTaGVldHM6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKENoYW5nZVR5cGUgY2hh
bmdlVHlwZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIG5ld1N0eWxlc2hl
ZXRzLCBib29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykKIHsKICAgICByZXF1aXJlc0Z1bGxT
dHlsZVJlY2FsYyA9IHRydWU7CiAgICAgCiAgICAgdW5zaWduZWQgbmV3U3R5bGVzaGVldENvdW50
ID0gbmV3U3R5bGVzaGVldHMuc2l6ZSgpOwogCi0gICAgaWYgKHVwZGF0ZUZsYWcgIT0gT3B0aW1p
emVkVXBkYXRlKQorICAgIGlmIChjaGFuZ2VUeXBlICE9IENoYW5nZVR5cGU6OkFjdGl2ZVNldCkK
ICAgICAgICAgcmV0dXJuIFJlY29uc3RydWN0OwogICAgIGlmICghbV9kb2N1bWVudC5zdHlsZVJl
c29sdmVySWZFeGlzdHMoKSkKICAgICAgICAgcmV0dXJuIFJlY29uc3RydWN0OwpAQCAtMjgyLDE5
ICsyODIsMTkgQEAgc3RhdGljIHZvaWQgZmlsdGVyRW5hYmxlZE5vbmVtcHR5Q1NTU3R5bAogICAg
IH0KIH0KIAotYm9vbCBBdXRob3JTdHlsZVNoZWV0czo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMo
VXBkYXRlRmxhZyB1cGRhdGVGbGFnKQordm9pZCBBdXRob3JTdHlsZVNoZWV0czo6dXBkYXRlQWN0
aXZlU3R5bGVTaGVldHMoQ2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogewogICAgIGlmIChtX2RvY3Vt
ZW50LmluU3R5bGVSZWNhbGMoKSB8fCBtX2RvY3VtZW50LmluUmVuZGVyVHJlZVVwZGF0ZSgpKSB7
CiAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCBkZWxldGluZyBzdHlsZSByZXNvbHZlciBpbiB0
aGUgbWlkZGxlIG9mIGEgc3R5bGUgcmVzb2x1dGlvbi4KICAgICAgICAgLy8gQ3Jhc2ggc3RhY2tz
IGluZGljYXRlIHdlIGNhbiBnZXQgaGVyZSB3aGVuIHogcmVzb3VyY2UgbG9hZCBmYWlscyBzeW5j
aHJvbm91c2x5IChmb3IgZXhhbXBsZSBkdWUgdG8gY29udGVudCBibG9ja2luZykuCiAgICAgICAg
IC8vIEZJWE1FOiBUaGVzZSBraW5kIG9mIGNhc2VzIHNob3VsZCBiZSBlbGltaW5hdGVkIGFuZCB0
aGlzIHBhdGggcmVwbGFjZWQgYnkgYW4gYXNzZXJ0LgotICAgICAgICBtX3BlbmRpbmdVcGRhdGVU
eXBlID0gRnVsbFVwZGF0ZTsKKyAgICAgICAgbV9wZW5kaW5nQ2hhbmdlVHlwZSA9IENoYW5nZVR5
cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbjsKICAgICAgICAgbV9kb2N1bWVudC5zY2hlZHVs
ZUZvcmNlZFN0eWxlUmVjYWxjKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgICAgICBy
ZXR1cm47CiAgICAgfQorCiAgICAgaWYgKCFtX2RvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8
UmVmUHRyPFN0eWxlU2hlZXQ+PiBhY3RpdmVTdHlsZVNoZWV0czsKICAgICBjb2xsZWN0QWN0aXZl
U3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wg
QXV0aG9yU3R5bGVTaGVldHM6OnVwZGF0ZUFjdGl2ZVN0eWwKICAgICBmaWx0ZXJFbmFibGVkTm9u
ZW1wdHlDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVl
dHMpOwogCiAgICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKLSAgICBhdXRvIHN0eWxl
UmVzb2x2ZXJVcGRhdGVUeXBlID0gYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UodXBkYXRlRmxhZywg
YWN0aXZlQ1NTU3R5bGVTaGVldHMsIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICBhdXRv
IHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0gYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoY2hhbmdl
VHlwZSwgYWN0aXZlQ1NTU3R5bGVTaGVldHMsIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKIAog
ICAgIHVwZGF0ZVN0eWxlUmVzb2x2ZXIoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIHN0eWxlUmVzb2x2
ZXJVcGRhdGVUeXBlKTsKIApAQCAtMzIxLDkgKzMyMSwxMyBAQCBib29sIEF1dGhvclN0eWxlU2hl
ZXRzOjp1cGRhdGVBY3RpdmVTdHlsCiAgICAgICAgIGlmIChzaGVldC0+Y29udGVudHMoKS51c2Vz
U3R5bGVCYXNlZEVkaXRhYmlsaXR5KCkpCiAgICAgICAgICAgICBtX3VzZXNTdHlsZUJhc2VkRWRp
dGFiaWxpdHkgPSB0cnVlOwogICAgIH0KLSAgICBtX3BlbmRpbmdVcGRhdGVUeXBlID0gTm9VcGRh
dGU7CiAKLSAgICByZXR1cm4gcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7CisgICAgaWYgKHJlcXVp
cmVzRnVsbFN0eWxlUmVjYWxjKSB7CisgICAgICAgIGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAg
ICAgICBtX3NoYWRvd1Jvb3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9kb2N1bWVudC5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CisgICAg
fQogfQogCiB2b2lkIEF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVTdHlsZVJlc29sdmVyKFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBhY3RpdmVTdHlsZVNoZWV0cywgU3R5bGVSZXNvbHZl
clVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKQEAgLTM4NiwyNSArMzkwLDI5IEBAIGJvb2wgQXV0aG9y
U3R5bGVTaGVldHM6OmFjdGl2ZVN0eWxlU2hlZXQKICAgICByZXR1cm4gbV93ZWFrQ29weU9mQWN0
aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5jb250YWlucyhzaGVldCk7CiB9CiAKLXZv
aWQgQXV0aG9yU3R5bGVTaGVldHM6OmZsdXNoUGVuZGluZ1VwZGF0ZXMoKQordm9pZCBBdXRob3JT
dHlsZVNoZWV0czo6Zmx1c2hQZW5kaW5nQ2hhbmdlcygpCiB7Ci0gICAgaWYgKG1fcGVuZGluZ1Vw
ZGF0ZVR5cGUgPT0gTm9VcGRhdGUpCisgICAgaWYgKCFtX3BlbmRpbmdDaGFuZ2VUeXBlKQogICAg
ICAgICByZXR1cm47Ci0gICAgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMobV9wZW5kaW5nVXBkYXRl
VHlwZSk7CisgICAgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoKm1fcGVuZGluZ0NoYW5nZVR5cGUp
OwogfQogCi12b2lkIEF1dGhvclN0eWxlU2hlZXRzOjpzY2hlZHVsZU9wdGltaXplZFVwZGF0ZSgp
Cit2b2lkIEF1dGhvclN0eWxlU2hlZXRzOjpzY2hlZHVsZUFjdGl2ZVNldENoYW5nZSgpCiB7Ci0g
ICAgaWYgKG1fb3B0aW1pemVkVXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKKyAgICBpZiAobV9wZW5k
aW5nQ2hhbmdlVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3Bl
bmRpbmdVcGRhdGVUeXBlID09IE5vVXBkYXRlKQotICAgICAgICBtX3BlbmRpbmdVcGRhdGVUeXBl
ID0gT3B0aW1pemVkVXBkYXRlOwotICAgIG1fb3B0aW1pemVkVXBkYXRlVGltZXIuc3RhcnRPbmVT
aG90KDApOworICAgIGlmICghbV9wZW5kaW5nQ2hhbmdlVHlwZSkKKyAgICAgICAgbV9wZW5kaW5n
Q2hhbmdlVHlwZSA9IENoYW5nZVR5cGU6OkFjdGl2ZVNldDsKKyAgICBtX3BlbmRpbmdDaGFuZ2VU
aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OmRpZENo
YW5nZShTdHlsZVJlc29sdmVyVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQordm9pZCBBdXRob3JTdHls
ZVNoZWV0czo6ZGlkQ2hhbmdlKENoYW5nZVR5cGUgY2hhbmdlVHlwZSkKIHsKLSAgICBtX29wdGlt
aXplZFVwZGF0ZVRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9wZW5kaW5nQ2hhbmdlVHlwZSAmJiAq
bV9wZW5kaW5nQ2hhbmdlVHlwZSA+IGNoYW5nZVR5cGUpCisgICAgICAgIGNoYW5nZVR5cGUgPSAq
bV9wZW5kaW5nQ2hhbmdlVHlwZTsKKworICAgIG1fcGVuZGluZ0NoYW5nZVRpbWVyLnN0b3AoKTsK
KyAgICBtX3BlbmRpbmdDaGFuZ2VUeXBlID0geyB9OwogCiAgICAgLy8gRG9uJ3QgYm90aGVyIHVw
ZGF0aW5nLCBzaW5jZSB3ZSBoYXZlbid0IGxvYWRlZCBhbGwgb3VyIHN0eWxlIGluZm8geWV0CiAg
ICAgLy8gYW5kIGhhdmVuJ3QgY2FsY3VsYXRlZCB0aGUgc3R5bGUgcmVzb2x2ZXIgZm9yIHRoZSBm
aXJzdCB0aW1lLgpAQCAtNDE0LDM2ICs0MjIsMTQgQEAgdm9pZCBBdXRob3JTdHlsZVNoZWV0czo6
ZGlkQ2hhbmdlKFN0eWxlUgogICAgIH0KICAgICBtX2RpZENhbGN1bGF0ZVN0eWxlUmVzb2x2ZXIg
PSB0cnVlOwogCi0gICAgYXV0byBzdHlsZVNoZWV0VXBkYXRlID0gKHVwZGF0ZUZsYWcgPT0gUmVj
YWxjU3R5bGVJZk5lZWRlZCB8fCB1cGRhdGVGbGFnID09IERlZmVyUmVjYWxjU3R5bGVJZk5lZWRl
ZCkKLSAgICAgICAgPyBBdXRob3JTdHlsZVNoZWV0czo6T3B0aW1pemVkVXBkYXRlCi0gICAgICAg
IDogQXV0aG9yU3R5bGVTaGVldHM6OkZ1bGxVcGRhdGU7Ci0gICAgYm9vbCBzdHlsZXNoZWV0Q2hh
bmdlUmVxdWlyZXNTdHlsZVJlY2FsYyA9IHVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKHN0eWxlU2hl
ZXRVcGRhdGUpOwotCi0gICAgYXV0byBzY2hlZHVsZVN0eWxlUmVjYWxjID0gWyZdIHsKLSAgICAg
ICAgaWYgKG1fc2hhZG93Um9vdCkKLSAgICAgICAgICAgIG1fc2hhZG93Um9vdC0+c2V0TmVlZHNT
dHlsZVJlY2FsYygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RvY3VtZW50LnNjaGVk
dWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsKLSAgICB9OwotCi0gICAgaWYgKHVwZGF0ZUZsYWcgPT0g
RGVmZXJSZWNhbGNTdHlsZSkgewotICAgICAgICBzY2hlZHVsZVN0eWxlUmVjYWxjKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodXBkYXRlRmxhZyA9PSBEZWZlclJlY2FsY1N0
eWxlSWZOZWVkZWQpIHsKLSAgICAgICAgaWYgKHN0eWxlc2hlZXRDaGFuZ2VSZXF1aXJlc1N0eWxl
UmVjYWxjKQotICAgICAgICAgICAgc2NoZWR1bGVTdHlsZVJlY2FsYygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKHN0eWxlc2hlZXRDaGFuZ2VSZXF1aXJlc1N0eWxlUmVjYWxj
KQotICAgICAgICBtX2RvY3VtZW50LnJlY2FsY1N0eWxlKFN0eWxlOjpGb3JjZSk7CisgICAgdXBk
YXRlQWN0aXZlU3R5bGVTaGVldHMoY2hhbmdlVHlwZSk7CiB9CiAKLXZvaWQgQXV0aG9yU3R5bGVT
aGVldHM6Om9wdGltaXplZFVwZGF0ZVRpbWVyRmlyZWQoKQordm9pZCBBdXRob3JTdHlsZVNoZWV0
czo6cGVuZGluZ0NoYW5nZVRpbWVyRmlyZWQoKQogewotICAgIGRpZENoYW5nZShSZWNhbGNTdHls
ZUlmTmVlZGVkKTsKKyAgICBpZiAoIW1fcGVuZGluZ0NoYW5nZVR5cGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBkaWRDaGFuZ2UoKm1fcGVuZGluZ0NoYW5nZVR5cGUpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vQXV0aG9yU3R5bGVTaGVldHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQXV0aG9yU3R5bGVTaGVldHMuaAkocmV2aXNpb24gMjA2MzUxKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hlZXRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDEzICs0OCw2IEBAIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3MgU2hhZG93Um9vdDsK
IGNsYXNzIFRyZWVTY29wZTsKIAotZW51bSBTdHlsZVJlc29sdmVyVXBkYXRlRmxhZyB7Ci0gICAg
UmVjYWxjU3R5bGVJbW1lZGlhdGVseSwKLSAgICBEZWZlclJlY2FsY1N0eWxlLAotICAgIFJlY2Fs
Y1N0eWxlSWZOZWVkZWQsCi0gICAgRGVmZXJSZWNhbGNTdHlsZUlmTmVlZGVkCi19OwotCiBjbGFz
cyBBdXRob3JTdHlsZVNoZWV0cyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC02OSw3ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFN0eWxlU2hlZXRDYW5k
aWRhdGVOb2RlKE5vZGUmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdm9pZCByZW1vdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZENoYW5nZShTdHlsZVJlc29sdmVyVXBkYXRlRmxhZyk7CisgICAgZW51bSBjbGFzcyBDaGFu
Z2VUeXBlIHsgQWN0aXZlU2V0LCBDb250ZW50c09ySW50ZXJwcmV0YXRpb24gfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZENoYW5nZShDaGFuZ2VUeXBlKTsKIAogICAgIFN0cmluZyBwcmVm
ZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZmVycmVkU3R5bGVz
aGVldFNldE5hbWU7IH0KICAgICBTdHJpbmcgc2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZTsgfQpAQCAtOTEsMTMgKzg1
LDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25z
dCBDU1NTdHlsZVNoZWV0KikgY29uc3Q7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3B0aW1pemVkVXBk
YXRlKCk7Ci0gICAgYm9vbCBoYXNQZW5kaW5nVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
bWl6ZWRVcGRhdGVUaW1lci5pc0FjdGl2ZSgpOyB9Ci0gICAgdm9pZCBmbHVzaFBlbmRpbmdVcGRh
dGVzKCk7CisgICAgdm9pZCBzY2hlZHVsZUFjdGl2ZVNldENoYW5nZSgpOworICAgIGJvb2wgaGFz
UGVuZGluZ1VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9wZW5kaW5nQ2hhbmdlVHlwZTsgfQor
ICAgIHZvaWQgZmx1c2hQZW5kaW5nQ2hhbmdlcygpOwogCiBwcml2YXRlOgotICAgIGVudW0gVXBk
YXRlRmxhZyB7IE5vVXBkYXRlID0gMCwgT3B0aW1pemVkVXBkYXRlLCBGdWxsVXBkYXRlIH07Ci0g
ICAgYm9vbCB1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnKTsKKyAgICB2b2lkIHVw
ZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKENoYW5nZVR5cGUpOwogCiAgICAgdm9pZCBjb2xsZWN0QWN0
aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4mKTsKIApAQCAtMTA2LDEw
ICs5OSwxMCBAQCBwcml2YXRlOgogICAgICAgICBSZXNldCwKICAgICAgICAgQWRkaXRpdmUKICAg
ICB9OwotICAgIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdl
KFVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHls
ZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOworICAgIFN0eWxlUmVzb2x2
ZXJVcGRhdGVUeXBlIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKENoYW5nZVR5cGUsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYgcmVxdWly
ZXNGdWxsU3R5bGVSZWNhbGMpOwogICAgIHZvaWQgdXBkYXRlU3R5bGVSZXNvbHZlcihWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlKTsKIAotICAg
IHZvaWQgb3B0aW1pemVkVXBkYXRlVGltZXJGaXJlZCgpOworICAgIHZvaWQgcGVuZGluZ0NoYW5n
ZVRpbWVyRmlyZWQoKTsKIAogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIFNoYWRvd1Jv
b3QqIG1fc2hhZG93Um9vdCB7IG51bGxwdHIgfTsKQEAgLTExNyw3ICsxMTAsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+IG1fc3R5bGVTaGVldHNGb3JTdHlsZVNo
ZWV0TGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBtX2FjdGl2ZVN0eWxl
U2hlZXRzOwogCi0gICAgVGltZXIgbV9vcHRpbWl6ZWRVcGRhdGVUaW1lcjsKKyAgICBUaW1lciBt
X3BlbmRpbmdDaGFuZ2VUaW1lcjsKIAogICAgIC8vIFRoaXMgaXMgYSBtaXJyb3Igb2YgbV9hY3Rp
dmVBdXRob3JTdHlsZVNoZWV0cyB0aGF0IGdldHMgcG9wdWxhdGVkIG9uIGRlbWFuZCBmb3IgYWN0
aXZlU3R5bGVTaGVldHNDb250YWlucygpLgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEhh
c2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PiBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0
TGlzdEZvckZhc3RMb29rdXA7CkBAIC0xMjksNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9wZW5kaW5nU3R5bGVTaGVldENvdW50IHsgMCB9OwogICAgIGJvb2wgbV9kaWRDYWxjdWxhdGVT
dHlsZVJlc29sdmVyIHsgZmFsc2UgfTsKIAotICAgIFVwZGF0ZUZsYWcgbV9wZW5kaW5nVXBkYXRl
VHlwZSB7IE5vVXBkYXRlIH07CisgICAgT3B0aW9uYWw8Q2hhbmdlVHlwZT4gbV9wZW5kaW5nQ2hh
bmdlVHlwZTsKIAogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX3N0eWxlU2hlZXRDYW5kaWRhdGVO
b2RlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU1
LDcgKzEzNTUsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50TGFuZ3VhZ2UoY29uc3QgCiAg
ICAgbV9jb250ZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTsKIAogICAgIC8vIFJlY2FsY3VsYXRlIHN0
eWxlIHNvIGxhbmd1YWdlIGlzIHVzZWQgd2hlbiBzZWxlY3RpbmcgdGhlIGluaXRpYWwgZm9udC4K
LSAgICBtX2F1dGhvclN0eWxlU2hlZXRzLT5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7Cisg
ICAgbV9hdXRob3JTdHlsZVNoZWV0cy0+ZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFu
Z2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB2b2lkIERvY3VtZW50Ojpz
ZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0xODU5LDcgKzE4NTksNyBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZTo6Q2hh
bmdlCiAgICAgLy8gcmUtYXR0YWNoaW5nIG91ciBjb250YWluaW5nIGlmcmFtZSwgd2hpY2ggd2hl
biBhc2tlZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkCiAgICAgLy8gaGl0cyBh
IG51bGwtZGVyZWZlcmVuY2UgZHVlIHRvIHNlY3VyaXR5IGNvZGUgYWx3YXlzIGFzc3VtaW5nIHRo
ZSBkb2N1bWVudCBoYXMgYSBTZWN1cml0eU9yaWdpbi4KIAotICAgIGF1dGhvclN0eWxlU2hlZXRz
KCkuZmx1c2hQZW5kaW5nVXBkYXRlcygpOworICAgIGF1dGhvclN0eWxlU2hlZXRzKCkuZmx1c2hQ
ZW5kaW5nQ2hhbmdlcygpOwogCiAgICAgZnJhbWVWaWV3LndpbGxSZWNhbGNTdHlsZSgpOwogCkBA
IC0xOTU5LDEzICsxOTU5LDEyIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KQogICAgIGlmICghdmlldygpIHx8IHZpZXcoKS0+aXNJblJlbmRlclRyZWVMYXlvdXQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dGhvclN0eWxlU2hlZXRzKCkuaGFzUGVuZGluZ1Vw
ZGF0ZSgpKQotICAgICAgICBhdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHls
ZUlmTmVlZGVkKTsKKyAgICBhdXRob3JTdHlsZVNoZWV0cygpLmZsdXNoUGVuZGluZ0NoYW5nZXMo
KTsKIAogICAgIGlmICghbmVlZHNTdHlsZVJlY2FsYygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICByZWNhbGNTdHlsZShTdHlsZTo6Tm9DaGFuZ2UpOworICAgIHJlY2FsY1N0eWxlKCk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCgpCkBAIC0yMDE0LDcgKzIwMTMsOCBAQCB2b2lk
IERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nCiAgICAgICAgIEhUTUxFbGVtZW50
KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7CiAgICAgICAgIGlmIChib2R5RWxlbWVu
dCAmJiAhYm9keUVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgbV9wZW5kaW5nU2hlZXRMYXlvdXQgPT0g
Tm9MYXlvdXRXaXRoUGVuZGluZ1NoZWV0cykgewogICAgICAgICAgICAgbV9wZW5kaW5nU2hlZXRM
YXlvdXQgPSBEaWRMYXlvdXRXaXRoUGVuZGluZ1NoZWV0czsKLSAgICAgICAgICAgIGF1dGhvclN0
eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICAg
ICAgYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5n
ZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CisgICAgICAgICAgICByZWNhbGNTdHls
ZShTdHlsZTo6Rm9yY2UpOwogICAgICAgICB9IGVsc2UgaWYgKG1faGFzTm9kZXNXaXRoUGxhY2Vo
b2xkZXJTdHlsZSkKICAgICAgICAgICAgIC8vIElmIG5ldyBub2RlcyBoYXZlIGJlZW4gYWRkZWQg
b3Igc3R5bGUgcmVjYWxjIGhhcyBiZWVuIGRvbmUgd2l0aCBzdHlsZSBzaGVldHMgc3RpbGwgcGVu
ZGluZywgc29tZSBub2RlcyAKICAgICAgICAgICAgIC8vIG1heSBub3QgaGF2ZSBoYWQgdGhlaXIg
cmVhbCBzdHlsZSBjYWxjdWxhdGVkIHlldC4gTm9ybWFsbHkgdGhpcyBnZXRzIGNsZWFuZWQgd2hl
biBzdHlsZSBzaGVldHMgYXJyaXZlIApAQCAtMzE1MSw3ICszMTUxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6ZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlcwogewogICAgIG1fbmVlZHNOb3RpZnlSZW1vdmVB
bGxQZW5kaW5nU3R5bGVzaGVldCA9IGZhbHNlOwogCi0gICAgYXV0aG9yU3R5bGVTaGVldHMoKS5k
aWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZUlmTmVlZGVkKTsKKyAgICBhdXRob3JTdHlsZVNoZWV0
cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6QWN0aXZlU2V0KTsK
IAogICAgIGlmIChtX3BlbmRpbmdTaGVldExheW91dCA9PSBEaWRMYXlvdXRXaXRoUGVuZGluZ1No
ZWV0cykgewogICAgICAgICBtX3BlbmRpbmdTaGVldExheW91dCA9IElnbm9yZUxheW91dFdpdGhQ
ZW5kaW5nU2hlZXRzOwpAQCAtMzE4Miw3ICszMTgyLDcgQEAgYm9vbCBEb2N1bWVudDo6dXNlc1N0
eWxlQmFzZWRFZGl0YWJpbGl0eQogICAgIEFTU0VSVCghbV9pblN0eWxlUmVjYWxjKTsKIAogICAg
IGF1dG8mIGF1dGhvclNoZWV0cyA9IGNvbnN0X2Nhc3Q8QXV0aG9yU3R5bGVTaGVldHMmPihhdXRo
b3JTdHlsZVNoZWV0cygpKTsKLSAgICBhdXRob3JTaGVldHMuZmx1c2hQZW5kaW5nVXBkYXRlcygp
OworICAgIGF1dGhvclNoZWV0cy5mbHVzaFBlbmRpbmdDaGFuZ2VzKCk7CiAgICAgcmV0dXJuIGF1
dGhvclNoZWV0cy51c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5KCk7CiB9CiAKQEAgLTMyMjYsNyAr
MzIyNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3QKICAgICAg
ICAgLy8gLWR3aAogICAgICAgICBhdXRob3JTdHlsZVNoZWV0cygpLnNldFNlbGVjdGVkU3R5bGVz
aGVldFNldE5hbWUoY29udGVudCk7CiAgICAgICAgIGF1dGhvclN0eWxlU2hlZXRzKCkuc2V0UHJl
ZmVycmVkU3R5bGVzaGVldFNldE5hbWUoY29udGVudCk7Ci0gICAgICAgIGF1dGhvclN0eWxlU2hl
ZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBhdXRob3JTdHlsZVNo
ZWV0cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNP
ckludGVycHJldGF0aW9uKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBIZWFkZXJO
YW1lOjpSZWZyZXNoOiB7CkBAIC0zNTMwLDcgKzM1MzAsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnNl
bGVjdGVkU3R5bGVzaGVldFNldCgpCiB2b2lkIERvY3VtZW50OjpzZXRTZWxlY3RlZFN0eWxlc2hl
ZXRTZXQoY29uc3QgU3RyaW5nJiBhU3RyaW5nKQogewogICAgIGF1dGhvclN0eWxlU2hlZXRzKCku
c2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZShhU3RyaW5nKTsKLSAgICBhdXRob3JTdHlsZVNo
ZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICBhdXRob3JTdHlsZVNoZWV0
cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPcklu
dGVycHJldGF0aW9uKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6ZXZhbHVhdGVNZWRpYVF1ZXJ5TGlz
dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJ
KHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNo
ZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBFeHRlbnNpb25T
dHlsZVNoZWV0czo6Y2xlYXJQYWdlVXNlcgogewogICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpIHsK
ICAgICAgICAgbV9wYWdlVXNlclNoZWV0ID0gbnVsbHB0cjsKLSAgICAgICAgbV9kb2N1bWVudC5h
dXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAg
bV9kb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0
czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKICAgICB9CiB9CiAKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlUGFnZVVzZQog
ewogICAgIGNsZWFyUGFnZVVzZXJTaGVldCgpOwogICAgIGlmIChwYWdlVXNlclNoZWV0KCkpCi0g
ICAgICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5
bGVJbW1lZGlhdGVseSk7CisgICAgICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5k
aWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnBy
ZXRhdGlvbik7CiB9CiAKIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBFeHRl
bnNpb25TdHlsZVNoZWV0czo6aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSBjb25zdApAQCAtMTU1
LDIxICsxNTUsMjEgQEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6aW52YWxpZGF0ZUluagog
ICAgIG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZCA9IGZhbHNlOwogICAgIGlmIChtX2lu
amVjdGVkVXNlclN0eWxlU2hlZXRzLmlzRW1wdHkoKSAmJiBtX2luamVjdGVkQXV0aG9yU3R5bGVT
aGVldHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC5hdXRob3JT
dHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICBtX2RvY3VtZW50
LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VU
eXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB2b2lkIEV4dGVuc2lvblN0eWxl
U2hlZXRzOjphZGRVc2VyU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHVzZXJT
aGVldCkKIHsKICAgICBBU1NFUlQodXNlclNoZWV0LmdldCgpLmlzVXNlclN0eWxlU2hlZXQoKSk7
CiAgICAgbV91c2VyU3R5bGVTaGVldHMuYXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEZN
b3ZlKHVzZXJTaGVldCksIG1fZG9jdW1lbnQpKTsKLSAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxl
U2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgIG1fZG9jdW1l
bnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5n
ZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiB9CiAKIHZvaWQgRXh0ZW5zaW9uU3R5
bGVTaGVldHM6OmFkZEF1dGhvclN0eWxlU2hlZXRGb3JUZXN0aW5nKFJlZjxTdHlsZVNoZWV0Q29u
dGVudHM+JiYgYXV0aG9yU2hlZXQpCiB7CiAgICAgQVNTRVJUKCFhdXRob3JTaGVldC5nZXQoKS5p
c1VzZXJTdHlsZVNoZWV0KCkpOwogICAgIG1fYXV0aG9yU3R5bGVTaGVldHNGb3JUZXN0aW5nLmFw
cGVuZChDU1NTdHlsZVNoZWV0OjpjcmVhdGUoV1RGTW92ZShhdXRob3JTaGVldCksIG1fZG9jdW1l
bnQpKTsKLSAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2Fs
Y1N0eWxlSW1tZWRpYXRlbHkpOworICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5k
aWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnBy
ZXRhdGlvbik7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6Om1heWJlQWRkQ29udGUKIAogdm9p
ZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6c3R5bGVSZXNvbHZlckNoYW5nZWRUaW1lckZpcmVkKCkK
IHsKLSAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0
eWxlSW1tZWRpYXRlbHkpOworICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRD
aGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRh
dGlvbik7CiB9CiAKIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OmRldGFjaEZyb21Eb2N1bWVu
dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAkocmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBJbmxpbmVT
dHlsZVNoZWV0T3duZXI6OnJlbW92ZWRGcm9tRAogCiAgICAgLy8gSWYgd2UncmUgaW4gZG9jdW1l
bnQgdGVhcmRvd24sIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgbm90aWZpY2F0aW9uIG9m
IG91ciBzaGVldCdzIHJlbW92YWwuCiAgICAgaWYgKGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRy
ZWUoKSkKLSAgICAgICAgZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVm
ZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGRvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlk
Q2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0
YXRpb24pOwogfQogCiB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y2xlYXJEb2N1bWVudERh
dGEoRG9jdW1lbnQmLCBFbGVtZW50JiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzcsNyArMjc3LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnJlbW92ZWRGcm9t
KAogCiAgICAgLy8gSWYgd2UncmUgaW4gZG9jdW1lbnQgdGVhcmRvd24sIHRoZW4gd2UgZG9uJ3Qg
bmVlZCB0byBkbyBhbnkgbm90aWZpY2F0aW9uIG9mIG91ciBzaGVldCdzIHJlbW92YWwuCiAgICAg
aWYgKGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICBkb2N1bWVudCgp
LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAg
ICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hl
ZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB2b2lkIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHZv
aWQgU2hhZG93Um9vdDo6dXBkYXRlU3R5bGUoKQogICAgIGlmICghbV9hdXRob3JTdHlsZVNoZWV0
cykKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBNYWtlIG9wdGltaXplZCB1cGRhdGVk
IHdvcmsuCi0gICAgbV9hdXRob3JTdHlsZVNoZWV0cy0+ZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5
bGUpOworICAgIG1fYXV0aG9yU3R5bGVTaGVldHMtPmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0
czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKIH0KIAogU3RyaW5nIFNo
YWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZShiCiAgICAgICAgIGlmICghbV9z
aGVldCAmJiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdCkKICAgICAgICAgICAg
IHByb2Nlc3MoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JT
dHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6
OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAgfQogfQogCkBAIC0x
NzYsNyArMTc2LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbgog
ICAgICAgICBtX21lZGlhID0gdmFsdWUuc3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKICAgICAgICAgcHJvY2VzcygpOwogICAgICAgICBpZiAobV9zaGVldCAmJiAhaXNEaXNhYmxl
ZCgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5n
ZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVT
aGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRz
T3JJbnRlcnByZXRhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5hbWUg
PT0gZGlzYWJsZWRBdHRyKSB7CkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1l
bnQ6OnByb2Nlc3MoKQogICAgIH0gZWxzZSBpZiAobV9zaGVldCkgewogICAgICAgICAvLyB3ZSBu
byBsb25nZXIgY29udGFpbiBhIHN0eWxlc2hlZXQsIGUuZy4gcGVyaGFwcyByZWwgb3IgdHlwZSB3
YXMgY2hhbmdlZAogICAgICAgICBjbGVhclNoZWV0KCk7Ci0gICAgICAgIGRvY3VtZW50KCkuYXV0
aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGRv
Y3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6
OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAgfQogfQogCkBAIC0z
MzAsNyArMzMwLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaQog
ICAgICAgICByZW1vdmVQZW5kaW5nU2hlZXQoUmVtb3ZlUGVuZGluZ1NoZWV0Tm90aWZ5TGF0ZXIp
OwogCiAgICAgaWYgKGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICBk
b2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGVJ
Zk5lZWRlZCk7CisgICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFu
Z2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkFjdGl2ZVNldCk7CiB9CiAKIHZvaWQg
SFRNTExpbmtFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQpAQCAtNTU1LDcgKzU1NSw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQKIAogICAgIGlmICh0
eXBlID09IEluYWN0aXZlU2hlZXQpIHsKICAgICAgICAgLy8gRG9jdW1lbnQganVzdCBuZWVkcyB0
byBrbm93IGFib3V0IHRoZSBzaGVldCBmb3IgZXhwb3N1cmUgdGhyb3VnaCBkb2N1bWVudC5zdHls
ZVNoZWV0cwotICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdl
KERlZmVyUmVjYWxjU3R5bGVJZk5lZWRlZCk7CisgICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5
bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkFjdGl2
ZVNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgs
NyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAgICAgICAgIGlm
IChzaGVldCgpKSB7CiAgICAgICAgICAgICBzaGVldCgpLT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFR
dWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheCh2YWx1ZSkpOwogICAgICAg
ICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUo
KSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hh
bmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICAgICAgICAgIGRvY3VtZW50KCku
YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5
cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gdHlwZUF0dHIpCiAgICAgICAgIG1fc3R5bGVTaGVldE93bmVyLnNldENvbnRlbnRU
eXBlKHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAkocmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg5LDcgKzg4OSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUKICAgICAgICAgbV9u
b2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLnNldChub2RlSWQsIGZvcmNlZFBzZXVkb1N0YXRlKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5yZW1vdmUobm9k
ZUlkKTsKLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hh
bmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuYXV0
aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6
OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZG9j
dW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpCkBAIC0xMTg5LDcgKzExODksNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldFBzZXVkb1N0YXRlCiAKICAgICBtX25vZGVJ
ZFRvRm9yY2VkUHNldWRvU3RhdGUuY2xlYXIoKTsKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDog
ZG9jdW1lbnRzVG9DaGFuZ2UpCi0gICAgICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygp
LmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgZG9jdW1lbnQtPmF1
dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBl
OjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAkocmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRlZE1lZGkKICAgICBtX2VtdWxhdGVkTWVk
aWEgPSBtZWRpYTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZyYW1lKCku
ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgZG9jdW1lbnQtPmF1dGhv
clN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAg
ICBkb2N1bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVl
dHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAgICAgIGRvY3Vt
ZW50LT51cGRhdGVMYXlvdXQoKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAko
cmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIEZyYW1lOjpzZXRQcmludGluZyhib29s
IHByaW50aW5nLCBjCiAgICAgbV9kb2MtPnNldFByaW50aW5nKHByaW50aW5nKTsKICAgICB2aWV3
KCktPmFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nKHByaW50aW5nKTsKIAotICAgIG1fZG9jLT5h
dXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAg
ICBtX2RvYy0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6
OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAgaWYgKHNob3VsZFVz
ZVByaW50aW5nTGF5b3V0KCkpIHsKICAgICAgICAgdmlldygpLT5mb3JjZUxheW91dEZvclBhZ2lu
YXRpb24ocGFnZVNpemUsIG9yaWdpbmFsUGFnZVNpemUsIG1heGltdW1TaHJpbmtSYXRpbywgc2hv
dWxkQWRqdXN0Vmlld1NpemUpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDEsNyArMTMwMSw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKICAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlciA9IGRvY3VtZW50LnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpOwogICAgICAgICBp
ZiAoIXN0eWxlUmVzb2x2ZXIgfHwgc3R5bGVSZXNvbHZlci0+aGFzTWVkaWFRdWVyaWVzQWZmZWN0
ZWRCeVZpZXdwb3J0Q2hhbmdlKCkpIHsKICAgICAgICAgICAgIExPRyhMYXlvdXQsICIgIGhhc01l
ZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSwgZW5xdWV1ZWluZyBzdHlsZSByZWNh
bGMiKTsKLSAgICAgICAgICAgIGRvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdl
KERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICAgICAgZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVl
dHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJ
bnRlcnByZXRhdGlvbik7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpbnN0cnVtZW50YXRp
b24gZXZlbnQgaXMgbm90IHN0cmljdGx5IGFjY3VyYXRlIHNpbmNlIGNhY2hlZCBtZWRpYSBxdWVy
eSByZXN1bHRzIGRvIG5vdCBwZXJzaXN0IGFjcm9zcyBTdHlsZVJlc29sdmVyIHJlYnVpbGRzLgog
ICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hh
bmdlZChkb2N1bWVudCk7CiAgICAgICAgIH0gZWxzZQpAQCAtMzQ5Niw3ICszNDk2LDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnNldFBhZ2luYXRpb24oY29uc3QgUGFnaQogCiAgICAgbV9wYWdpbmF0aW9u
ID0gcGFnaW5hdGlvbjsKIAotICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVl
dHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgZnJhbWUoKS5kb2N1bWVudCgp
LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdl
VHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKIH0KIAogSW50UmVjdCBGcmFtZVZpZXc6
OndpbmRvd0NsaXBSZWN0KCkgY29uc3QKQEAgLTQ5NjUsNyArNDk2NSw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWUKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50
ID0gZnJhbWUoKS5kb2N1bWVudCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBw
cm9iYWJseSBiZSB1cGRhdGVWaWV3cG9ydFVuaXRzT25SZXNpemUoKSwgYnV0IHN5bmNocm9ub3Vz
bHkKICAgICAgICAgLy8gZGlydHlpbmcgc3R5bGUgaGVyZSBjYXVzZXMgYXNzZXJ0aW9ucyBvbiBp
T1MgKHJkYXI6Ly9wcm9ibGVtLzE5OTk4MTY2KS4KLSAgICAgICAgZG9jdW1lbnQtPmF1dGhvclN0
eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBkb2N1bWVu
dC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5n
ZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAgfQogfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBQYWdlOjpz
ZXRWaWV3TW9kZShWaWV3TW9kZSB2aWV3TW9kZQogICAgICAgICBtX21haW5GcmFtZS0+dmlldygp
LT5mb3JjZUxheW91dCgpOwogCiAgICAgaWYgKG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQotICAg
ICAgICBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFu
Z2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIG1fbWFpbkZyYW1lLT5kb2N1bWVu
dCgpLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hh
bmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
VklFV19NT0RFX0NTU19NRURJQSkKIApAQCAtNTAyLDcgKzUwMiw3IEBAIHZvaWQgUGFnZTo6c2V0
TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWUKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
ewogICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJS
ZWNhbGNTdHlsZSk7CisgICAgICAgICAgICBkb2N1bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5k
aWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnBy
ZXRhdGlvbik7CiAgICAgfQogfQogCkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFBhZ2U6Omlu
dmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDCiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgZG9jdW1lbnQtPmV4dGVuc2lvblN0eWxlU2hlZXRz
KCkuaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7Ci0gICAgICAgIGRvY3VtZW50
LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAg
ICAgZG9jdW1lbnQtPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hl
ZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6
OnJlYnVpbGRGb250RmFjZQogICAgICAgICB9CiAgICAgfQogCi0gICAgZG9jdW1lbnQoKS5hdXRo
b3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICBkb2N1bWVu
dCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFu
Z2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiBOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IFNWR0ZvbnRGYWNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmIHJvb3RQYXJlbnQpCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBTVkdGb250RmFj
ZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbgogICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS51bnJlZ2lzdGVyU1ZHRm9udEZhY2VFbGVtZW50KHRoaXMpOwogICAgICAgICBt
X2ZvbnRGYWNlUnVsZS0+bXV0YWJsZVByb3BlcnRpZXMoKS5jbGVhcigpOwogCi0gICAgICAgIGRv
Y3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7
CisgICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9y
U3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAg
fSBlbHNlCiAgICAgICAgIEFTU0VSVCghbV9mb250RWxlbWVudCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVAogICAgIFN0cmluZyBj
c3NTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfY3Nz
LCBzaXplb2YoWE1MVmlld2VyX2NzcykpOwogICAgIGF1dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoY3NzU3RyaW5nKTsKICAgICBtX2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFN0
cmluZyhBU0NJSUxpdGVyYWwoInhtbC12aWV3ZXItc3R5bGUiKSkpLT5hcHBlbmRDaGlsZCh0ZXh0
LCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCku
ZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgIG1fZG9jdW1lbnQuYXV0aG9y
U3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNv
bnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmVuZCgpCiAgICAgICAgIGluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7
CiAgICAgZWxzZSB7CiAgICAgICAgIHVwZGF0ZUxlYWZUZXh0Tm9kZSgpOwotICAgICAgICBkb2N1
bWVudCgpLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0
ZWx5KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2Uo
QXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7
CiAgICAgfQogCiAgICAgaWYgKGlzUGFyc2luZygpKQpJbmRleDogU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkocmV2aXNp
b24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg3LDcgKzEzODcsNyBAQCB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9y
bVNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50IHRo
aW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCi0gICAgICAg
IGRvY3VtZW50KCktPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOworICAgICAgICBkb2N1bWVudCgpLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENo
YW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0
aW9uKTsKIAogICAgICAgICAvLyBzdHlsZVJlc29sdmVyQ2hhbmdlZCgpIGNhbGwgY2FuIGRldGFj
aCB0aGUgcGFyc2VyIGFuZCBudWxsIG91dCBpdHMgZG9jdW1lbnQuCiAgICAgICAgIC8vIEluIHRo
YXQgY2FzZSwgd2UganVzdCBiYWlsIG91dC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMjA2MzUyKQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYxMSwxMCArMzYxMSwx
MiBAQCAtICh2b2lkKXJlYXBwbHlTdHlsZXMKICAgICBkb3VibGUgc3RhcnQgPSBDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKTsKICNlbmRpZgogCi0gICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmF1dGhv
clN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwotICAgIAot
I2lmZGVmIExPR19USU1FUyAgICAgICAgCisgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pKSB7CisgICAgICAgIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+YXV0aG9y
U3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNv
bnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIH0KKworI2lmZGVmIExPR19USU1FUwogICAgIGRv
dWJsZSB0aGlzVGltZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIC0gc3RhcnQ7CiAgICAg
TE9HKFRpbWluZywgIiVzIGFwcGx5IHN0eWxlIHNlY29uZHMgPSAlZiIsIFtzZWxmIFVSTF0sIHRo
aXNUaW1lKTsKICNlbmRpZgpAQCAtNTAwNSw3ICs1MDA3LDcgQEAgLSAodm9pZClfc2V0UHJpbnRp
bmc6KEJPT0wpcHJpbnRpbmcgbWluaQogCiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0UGFnaW5h
dGVkRm9yU2NyZWVuKF9wcml2YXRlLT5wYWdpbmF0ZVNjcmVlbkNvbnRlbnQpOwogICAgICAgICAg
ICAgZG9jdW1lbnQtPnNldFByaW50aW5nKF9wcml2YXRlLT5wcmludGluZyk7Ci0gICAgICAgICAg
ICBkb2N1bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJbW1l
ZGlhdGVseSk7CisgICAgICAgICAgICBkb2N1bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRD
aGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRh
dGlvbik7CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289748</attachid>
            <date>2016-09-24 11:50:46 -0700</date>
            <delta_ts>2016-09-25 05:25:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>authorstylesheets-didchange-enum-3.patch</filename>
            <type>text/plain</type>
            <size>38251</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE2LTA5LTI0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBdXRob3JTdHlsZVNoZWV0cyBz
aG91bGRuJ3QgdHJpZ2dlciBzeW5jaHJvbm91cyBzdHlsZSByZXNvbHV0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNTMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0aG9yU3R5bGVTaGVldHM6
OmRpZENoYW5nZSgpIHRvb2sgZm91ciBkaWZmZXJlbnQgZW51bSB2YWx1ZXMsIHR3byBvZiB3aGlj
aCB0cmlnZ2VyZWQKKyAgICAgICAgYSBzeW5jaHJvbm91cyBzdHlsZSByZXNvbHV0aW9uLiBUaGlz
IGlzIGFsbW9zdCBhbHdheXMgdW5uZWNlc3NhcnkgYXMgYW55IHN1YnNlcXVlbnQKKyAgICAgICAg
Y2FsbCB0aGF0IHJlcXVpcmVzIHVwLXRvLWRhdGUgc3R5bGUgb3IgbGF5b3V0IHdpbGwgcGVyZm9y
bSBpdC4gSW4gdGhlIGZldyBjYXNlcyB3aGVyZQorICAgICAgICBpdCBpcyBhY3R1YWxseSBuZWVk
ZWQgdGhlIGNsaWVudCBjYW4ganVzdCBkbyBpdCBtYW51YWxseS4KKworICAgICAgICBUaGUgcGF0
Y2ggYWxzbyByZW5hbWVzIHRoZSByZW1haW5pbmcgZW51bSB2YWx1ZXMgdG8KKworICAgICAgICAg
ICAgZW51bSBjbGFzcyBDaGFuZ2VUeXBlIHsgQWN0aXZlU2V0LCBDb250ZW50c09ySW50ZXJwcmV0
YXRpb24gfTsKKworICAgICAgICBUaGUgZmlyc3QgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIHNl
dCBvZiBhY3RpdmUgc3R5bGVzaGVldHMgbWlnaHQgaGF2ZSBjaGFuZ2VkIGFuZCBuZWVkcyB0byBi
ZSByZWNvbXB1dGVkLgorICAgICAgICBUaGUgc2Vjb25kcyBvbmUgaW5kaWNhdGVzIHRoYXQgZWl0
aGVyIHRoZSBjb250ZW50IG9mIHNvbWUgc3R5bGVzaGVldCBoYXMgY2hhbmdlZCBvciB0aGF0IHRo
ZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICB3ZSBpbnRlcnByZXQgdGhlIHNoZWV0cyBoYXMg
c29tZWhvdyBjaGFuZ2VkLgorCisgICAgICAgIFRoZSBleGlzdGluZyAiQXNOZWVkZWQiIHZhbHVl
cyBtYXAgdG8gQ2hhbmdlVHlwZTo6QWN0aXZlU2V0IGFuZCB0aGUgcmVzdCBtYXAgdG8gQ2hhbmdl
VHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uLgorICAgICAgICBUaGlzIGFsc28gbWFrZXMg
aXQgb2J2aW91cyB0aGF0IHNvbWUgY2FsbCBzaXRlcyB1c2UgdGhlIHdyb25nIHZhbHVlLiBUaGlz
IHBhdGNoIGRvZXNuJ3QgYWRkcmVzcyB0aGVzZSBjYXNlcy4KKworICAgICAgICAqIGNzcy9DU1NT
dHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmRpZE11dGF0
ZVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjbGVhck93bmVyTm9kZSk6CisgICAgICAg
ICogZG9tL0F1dGhvclN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhvclN0
eWxlU2hlZXRzOjpBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdXRob3JT
dHlsZVNoZWV0czo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aG9yU3R5bGVTaGVldHM6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1dGhvclN0eWxlU2hlZXRzOjpmbHVzaFBlbmRpbmdDaGFuZ2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhvclN0eWxlU2hlZXRzOjpzY2hlZHVsZUFjdGl2ZVNldENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRob3JTdHlsZVNoZWV0czo6ZGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhvclN0eWxlU2hlZXRzOjpwZW5kaW5nQ2hhbmdlVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRob3JTdHlsZVNoZWV0czo6Zmx1c2hQZW5kaW5nVXBkYXRlcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRob3JTdHlsZVNoZWV0czo6c2NoZWR1bGVP
cHRpbWl6ZWRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVT
aGVldHM6Om9wdGltaXplZFVwZGF0ZVRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9BdXRob3JTdHlsZVNoZWV0cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVl
dHM6Omhhc1BlbmRpbmdVcGRhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29udGVudExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6dXBkYXRlU3R5bGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRSZW1vdmVBbGxQZW5kaW5nU3R5bGVzaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6dXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KToKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5
bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OmNs
ZWFyUGFnZVVzZXJTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0
czo6dXBkYXRlUGFnZVVzZXJTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHls
ZVNoZWV0czo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkQXV0aG9yU3R5bGVTaGVldEZvclRl
c3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OnN0eWxlUmVz
b2x2ZXJDaGFuZ2VkVGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OnJlbW92
ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbSk6
CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Um9vdDo6dXBkYXRlU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxTdHls
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXRQc2V1ZG9TdGF0ZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRlZE1lZGlhKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRQcmludGluZyk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRQYWdpbmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnNldFZpZXdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE5lZWRzUmVjYWxj
U3R5bGVJbkFsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbnZhbGlkYXRlSW5q
ZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcyk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OnJl
YnVpbGRGb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OnJl
bW92ZWRGcm9tKToKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcpOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmVuZCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OmRvRW5kKToKKwogMjAxNi0wOS0yMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgTW92ZSBzdHlsZXNoZWV0IGNoYW5nZSBsb2dpYyBmcm9tIERvY3VtZW50
IHRvIEF1dGhvclN0eWxlU2hlZXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDExIEBAIHZvaWQgQ1NTU3R5bGVT
aGVldDo6ZGlkTXV0YXRlUnVsZXMoUnVsZU0KICAgICAgICAgICAgICAgICByZXNvbHZlci0+YWRk
S2V5ZnJhbWVTdHlsZSgqaW5zZXJ0ZWRLZXlmcmFtZXNSdWxlKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBvd25lci0+YXV0aG9yU3R5bGVTaGVldHMoKS5zY2hlZHVs
ZU9wdGltaXplZFVwZGF0ZSgpOworICAgICAgICBvd25lci0+YXV0aG9yU3R5bGVTaGVldHMoKS5z
Y2hlZHVsZUFjdGl2ZVNldENoYW5nZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
b3duZXItPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOwor
ICAgIG93bmVyLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0
czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKIAogICAgIG1fbXV0YXRl
ZFJ1bGVzID0gdHJ1ZTsKIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6
OmRpZE11dGF0ZSgpCiAgICAgRG9jdW1lbnQqIG93bmVyID0gb3duZXJEb2N1bWVudCgpOwogICAg
IGlmICghb3duZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBvd25lci0+YXV0aG9yU3R5bGVTaGVl
dHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgb3duZXItPmF1dGhvclN0eWxl
U2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50
c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB2b2lkIENTU1N0eWxlU2hlZXQ6OmNsZWFyT3duZXJO
b2RlKCkKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6OmNsZWFyT3duZXJO
b2RlKCkKICAgICBtX293bmVyTm9kZSA9IDA7CiAgICAgaWYgKCFvd25lcikKICAgICAgICAgcmV0
dXJuOwotICAgIG93bmVyLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2Fs
Y1N0eWxlSWZOZWVkZWQpOworICAgIG93bmVyLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5n
ZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6QWN0aXZlU2V0KTsKIH0KIAogdm9pZCBD
U1NTdHlsZVNoZWV0OjpyZWF0dGFjaENoaWxkUnVsZUNTU09NV3JhcHBlcnMoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hlZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQXV0aG9yU3R5bGVTaGVldHMuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vQXV0aG9yU3R5bGVTaGVldHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NywxNCArNTcsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQXV0aG9y
U3R5bGVTaGVldHM6OkF1dGhvclN0eWxlU2hlZXRzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX29wdGltaXplZFVwZGF0ZVRpbWVyKCp0aGlz
LCAmQXV0aG9yU3R5bGVTaGVldHM6Om9wdGltaXplZFVwZGF0ZVRpbWVyRmlyZWQpCisgICAgLCBt
X3BlbmRpbmdDaGFuZ2VUaW1lcigqdGhpcywgJkF1dGhvclN0eWxlU2hlZXRzOjpwZW5kaW5nQ2hh
bmdlVGltZXJGaXJlZCkKIHsKIH0KIAogQXV0aG9yU3R5bGVTaGVldHM6OkF1dGhvclN0eWxlU2hl
ZXRzKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiAgICAgOiBtX2RvY3VtZW50KHNoYWRvd1Jvb3Qu
ZG9jdW1lbnRTY29wZSgpKQogICAgICwgbV9zaGFkb3dSb290KCZzaGFkb3dSb290KQotICAgICwg
bV9vcHRpbWl6ZWRVcGRhdGVUaW1lcigqdGhpcywgJkF1dGhvclN0eWxlU2hlZXRzOjpvcHRpbWl6
ZWRVcGRhdGVUaW1lckZpcmVkKQorICAgICwgbV9wZW5kaW5nQ2hhbmdlVGltZXIoKnRoaXMsICZB
dXRob3JTdHlsZVNoZWV0czo6cGVuZGluZ0NoYW5nZVRpbWVyRmlyZWQpCiB7CiB9CiAKQEAgLTIx
MywxMyArMjEzLDEzIEBAIHZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OmNvbGxlY3RBY3RpdmVTdHkK
ICAgICB9CiB9CiAKLUF1dGhvclN0eWxlU2hlZXRzOjpTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBB
dXRob3JTdHlsZVNoZWV0czo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoVXBkYXRlRmxhZyB1cGRh
dGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgbmV3U3R5bGVzaGVl
dHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKQorQXV0aG9yU3R5bGVTaGVldHM6OlN0
eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIEF1dGhvclN0eWxlU2hlZXRzOjphbmFseXplU3R5bGVTaGVl
dENoYW5nZShDaGFuZ2VUeXBlIGNoYW5nZVR5cGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMp
CiB7CiAgICAgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSB0cnVlOwogICAgIAogICAgIHVuc2ln
bmVkIG5ld1N0eWxlc2hlZXRDb3VudCA9IG5ld1N0eWxlc2hlZXRzLnNpemUoKTsKIAotICAgIGlm
ICh1cGRhdGVGbGFnICE9IE9wdGltaXplZFVwZGF0ZSkKKyAgICBpZiAoY2hhbmdlVHlwZSAhPSBD
aGFuZ2VUeXBlOjpBY3RpdmVTZXQpCiAgICAgICAgIHJldHVybiBSZWNvbnN0cnVjdDsKICAgICBp
ZiAoIW1fZG9jdW1lbnQuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCiAgICAgICAgIHJldHVybiBS
ZWNvbnN0cnVjdDsKQEAgLTI4MiwxOSArMjgyLDE5IEBAIHN0YXRpYyB2b2lkIGZpbHRlckVuYWJs
ZWROb25lbXB0eUNTU1N0eWwKICAgICB9CiB9CiAKLWJvb2wgQXV0aG9yU3R5bGVTaGVldHM6OnVw
ZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKK3ZvaWQgQXV0aG9y
U3R5bGVTaGVldHM6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKENoYW5nZVR5cGUgY2hhbmdlVHlw
ZSkKIHsKICAgICBpZiAobV9kb2N1bWVudC5pblN0eWxlUmVjYWxjKCkgfHwgbV9kb2N1bWVudC5p
blJlbmRlclRyZWVVcGRhdGUoKSkgewogICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgZGVsZXRp
bmcgc3R5bGUgcmVzb2x2ZXIgaW4gdGhlIG1pZGRsZSBvZiBhIHN0eWxlIHJlc29sdXRpb24uCiAg
ICAgICAgIC8vIENyYXNoIHN0YWNrcyBpbmRpY2F0ZSB3ZSBjYW4gZ2V0IGhlcmUgd2hlbiB6IHJl
c291cmNlIGxvYWQgZmFpbHMgc3luY2hyb25vdXNseSAoZm9yIGV4YW1wbGUgZHVlIHRvIGNvbnRl
bnQgYmxvY2tpbmcpLgogICAgICAgICAvLyBGSVhNRTogVGhlc2Uga2luZCBvZiBjYXNlcyBzaG91
bGQgYmUgZWxpbWluYXRlZCBhbmQgdGhpcyBwYXRoIHJlcGxhY2VkIGJ5IGFuIGFzc2VydC4KLSAg
ICAgICAgbV9wZW5kaW5nVXBkYXRlVHlwZSA9IEZ1bGxVcGRhdGU7CisgICAgICAgIG1fcGVuZGlu
Z0NoYW5nZVR5cGUgPSBDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb247CiAgICAg
ICAgIG1fZG9jdW1lbnQuc2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGlmICghbV9kb2N1bWVu
dC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4gYWN0aXZlU3R5bGVTaGVl
dHM7CiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKQEAg
LTMwNSw3ICszMDUsNyBAQCBib29sIEF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVBY3RpdmVTdHls
CiAgICAgZmlsdGVyRW5hYmxlZE5vbmVtcHR5Q1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVT
aGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIGJvb2wgcmVxdWlyZXNGdWxsU3R5bGVS
ZWNhbGM7Ci0gICAgYXV0byBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IGFuYWx5emVTdHlsZVNo
ZWV0Q2hhbmdlKHVwZGF0ZUZsYWcsIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCByZXF1aXJlc0Z1bGxT
dHlsZVJlY2FsYyk7CisgICAgYXV0byBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IGFuYWx5emVT
dHlsZVNoZWV0Q2hhbmdlKGNoYW5nZVR5cGUsIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCByZXF1aXJl
c0Z1bGxTdHlsZVJlY2FsYyk7CiAKICAgICB1cGRhdGVTdHlsZVJlc29sdmVyKGFjdGl2ZUNTU1N0
eWxlU2hlZXRzLCBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSk7CiAKQEAgLTMyMSw5ICszMjEsMTMg
QEAgYm9vbCBBdXRob3JTdHlsZVNoZWV0czo6dXBkYXRlQWN0aXZlU3R5bAogICAgICAgICBpZiAo
c2hlZXQtPmNvbnRlbnRzKCkudXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpKQogICAgICAgICAg
ICAgbV91c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wZW5k
aW5nVXBkYXRlVHlwZSA9IE5vVXBkYXRlOwogCi0gICAgcmV0dXJuIHJlcXVpcmVzRnVsbFN0eWxl
UmVjYWxjOworICAgIGlmIChyZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykgeworICAgICAgICBpZiAo
bV9zaGFkb3dSb290KQorICAgICAgICAgICAgbV9zaGFkb3dSb290LT5zZXROZWVkc1N0eWxlUmVj
YWxjKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZG9jdW1lbnQuc2NoZWR1bGVGb3Jj
ZWRTdHlsZVJlY2FsYygpOworICAgIH0KIH0KIAogdm9pZCBBdXRob3JTdHlsZVNoZWV0czo6dXBk
YXRlU3R5bGVSZXNvbHZlcihWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgYWN0aXZlU3R5
bGVTaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCkBAIC0zODYsMjUg
KzM5MCwyOSBAQCBib29sIEF1dGhvclN0eWxlU2hlZXRzOjphY3RpdmVTdHlsZVNoZWV0CiAgICAg
cmV0dXJuIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cC0+Y29u
dGFpbnMoc2hlZXQpOwogfQogCi12b2lkIEF1dGhvclN0eWxlU2hlZXRzOjpmbHVzaFBlbmRpbmdV
cGRhdGVzKCkKK3ZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OmZsdXNoUGVuZGluZ0NoYW5nZXMoKQog
ewotICAgIGlmIChtX3BlbmRpbmdVcGRhdGVUeXBlID09IE5vVXBkYXRlKQorICAgIGlmICghbV9w
ZW5kaW5nQ2hhbmdlVHlwZSkKICAgICAgICAgcmV0dXJuOwotICAgIHVwZGF0ZUFjdGl2ZVN0eWxl
U2hlZXRzKG1fcGVuZGluZ1VwZGF0ZVR5cGUpOworICAgIHVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRz
KCptX3BlbmRpbmdDaGFuZ2VUeXBlKTsKIH0KIAotdm9pZCBBdXRob3JTdHlsZVNoZWV0czo6c2No
ZWR1bGVPcHRpbWl6ZWRVcGRhdGUoKQordm9pZCBBdXRob3JTdHlsZVNoZWV0czo6c2NoZWR1bGVB
Y3RpdmVTZXRDaGFuZ2UoKQogewotICAgIGlmIChtX29wdGltaXplZFVwZGF0ZVRpbWVyLmlzQWN0
aXZlKCkpCisgICAgaWYgKG1fcGVuZGluZ0NoYW5nZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAobV9wZW5kaW5nVXBkYXRlVHlwZSA9PSBOb1VwZGF0ZSkKLSAgICAg
ICAgbV9wZW5kaW5nVXBkYXRlVHlwZSA9IE9wdGltaXplZFVwZGF0ZTsKLSAgICBtX29wdGltaXpl
ZFVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBpZiAoIW1fcGVuZGluZ0NoYW5nZVR5
cGUpCisgICAgICAgIG1fcGVuZGluZ0NoYW5nZVR5cGUgPSBDaGFuZ2VUeXBlOjpBY3RpdmVTZXQ7
CisgICAgbV9wZW5kaW5nQ2hhbmdlVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIEF1
dGhvclN0eWxlU2hlZXRzOjpkaWRDaGFuZ2UoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRl
RmxhZykKK3ZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OmRpZENoYW5nZShDaGFuZ2VUeXBlIGNoYW5n
ZVR5cGUpCiB7Ci0gICAgbV9vcHRpbWl6ZWRVcGRhdGVUaW1lci5zdG9wKCk7CisgICAgaWYgKG1f
cGVuZGluZ0NoYW5nZVR5cGUgJiYgKm1fcGVuZGluZ0NoYW5nZVR5cGUgPiBjaGFuZ2VUeXBlKQor
ICAgICAgICBjaGFuZ2VUeXBlID0gKm1fcGVuZGluZ0NoYW5nZVR5cGU7CisKKyAgICBtX3BlbmRp
bmdDaGFuZ2VUaW1lci5zdG9wKCk7CisgICAgbV9wZW5kaW5nQ2hhbmdlVHlwZSA9IHsgfTsKIAog
ICAgIC8vIERvbid0IGJvdGhlciB1cGRhdGluZywgc2luY2Ugd2UgaGF2ZW4ndCBsb2FkZWQgYWxs
IG91ciBzdHlsZSBpbmZvIHlldAogICAgIC8vIGFuZCBoYXZlbid0IGNhbGN1bGF0ZWQgdGhlIHN0
eWxlIHJlc29sdmVyIGZvciB0aGUgZmlyc3QgdGltZS4KQEAgLTQxNCwzNiArNDIyLDE0IEBAIHZv
aWQgQXV0aG9yU3R5bGVTaGVldHM6OmRpZENoYW5nZShTdHlsZVIKICAgICB9CiAgICAgbV9kaWRD
YWxjdWxhdGVTdHlsZVJlc29sdmVyID0gdHJ1ZTsKIAotICAgIGF1dG8gc3R5bGVTaGVldFVwZGF0
ZSA9ICh1cGRhdGVGbGFnID09IFJlY2FsY1N0eWxlSWZOZWVkZWQgfHwgdXBkYXRlRmxhZyA9PSBE
ZWZlclJlY2FsY1N0eWxlSWZOZWVkZWQpCi0gICAgICAgID8gQXV0aG9yU3R5bGVTaGVldHM6Ok9w
dGltaXplZFVwZGF0ZQotICAgICAgICA6IEF1dGhvclN0eWxlU2hlZXRzOjpGdWxsVXBkYXRlOwot
ICAgIGJvb2wgc3R5bGVzaGVldENoYW5nZVJlcXVpcmVzU3R5bGVSZWNhbGMgPSB1cGRhdGVBY3Rp
dmVTdHlsZVNoZWV0cyhzdHlsZVNoZWV0VXBkYXRlKTsKLQotICAgIGF1dG8gc2NoZWR1bGVTdHls
ZVJlY2FsYyA9IFsmXSB7Ci0gICAgICAgIGlmIChtX3NoYWRvd1Jvb3QpCi0gICAgICAgICAgICBt
X3NoYWRvd1Jvb3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9kb2N1bWVudC5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7Ci0gICAgfTsKLQot
ICAgIGlmICh1cGRhdGVGbGFnID09IERlZmVyUmVjYWxjU3R5bGUpIHsKLSAgICAgICAgc2NoZWR1
bGVTdHlsZVJlY2FsYygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHVwZGF0
ZUZsYWcgPT0gRGVmZXJSZWNhbGNTdHlsZUlmTmVlZGVkKSB7Ci0gICAgICAgIGlmIChzdHlsZXNo
ZWV0Q2hhbmdlUmVxdWlyZXNTdHlsZVJlY2FsYykKLSAgICAgICAgICAgIHNjaGVkdWxlU3R5bGVS
ZWNhbGMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChzdHlsZXNoZWV0Q2hh
bmdlUmVxdWlyZXNTdHlsZVJlY2FsYykKLSAgICAgICAgbV9kb2N1bWVudC5yZWNhbGNTdHlsZShT
dHlsZTo6Rm9yY2UpOworICAgIHVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKGNoYW5nZVR5cGUpOwog
fQogCi12b2lkIEF1dGhvclN0eWxlU2hlZXRzOjpvcHRpbWl6ZWRVcGRhdGVUaW1lckZpcmVkKCkK
K3ZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OnBlbmRpbmdDaGFuZ2VUaW1lckZpcmVkKCkKIHsKLSAg
ICBkaWRDaGFuZ2UoUmVjYWxjU3R5bGVJZk5lZWRlZCk7CisgICAgaWYgKCFtX3BlbmRpbmdDaGFu
Z2VUeXBlKQorICAgICAgICByZXR1cm47CisgICAgZGlkQ2hhbmdlKCptX3BlbmRpbmdDaGFuZ2VU
eXBlKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hlZXRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hlZXRzLmgJ
KHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdXRob3JTdHlsZVNoZWV0
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMyArNDgsNiBAQCBjbGFzcyBTdHlsZVNoZWV0TGlz
dDsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBUcmVlU2NvcGU7CiAKLWVudW0gU3R5bGVSZXNv
bHZlclVwZGF0ZUZsYWcgewotICAgIFJlY2FsY1N0eWxlSW1tZWRpYXRlbHksCi0gICAgRGVmZXJS
ZWNhbGNTdHlsZSwKLSAgICBSZWNhbGNTdHlsZUlmTmVlZGVkLAotICAgIERlZmVyUmVjYWxjU3R5
bGVJZk5lZWRlZAotfTsKLQogY2xhc3MgQXV0aG9yU3R5bGVTaGVldHMgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjksNyArNjIsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlJiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOwogICAgIHZvaWQgcmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSYpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDaGFuZ2UoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcp
OworICAgIGVudW0gY2xhc3MgQ2hhbmdlVHlwZSB7IEFjdGl2ZVNldCwgQ29udGVudHNPckludGVy
cHJldGF0aW9uIH07CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDaGFuZ2UoQ2hhbmdlVHlw
ZSk7CiAKICAgICBTdHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lOyB9CiAgICAgU3RyaW5nIHNlbGVjdGVk
U3R5bGVzaGVldFNldE5hbWUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkU3R5bGVzaGVldFNl
dE5hbWU7IH0KQEAgLTkxLDEzICs4NSwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGFjdGl2ZVN0
eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCopIGNvbnN0OwogCi0gICAgdm9p
ZCBzY2hlZHVsZU9wdGltaXplZFVwZGF0ZSgpOwotICAgIGJvb2wgaGFzUGVuZGluZ1VwZGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW1pemVkVXBkYXRlVGltZXIuaXNBY3RpdmUoKTsgfQotICAg
IHZvaWQgZmx1c2hQZW5kaW5nVXBkYXRlcygpOworICAgIHZvaWQgc2NoZWR1bGVBY3RpdmVTZXRD
aGFuZ2UoKTsKKyAgICBib29sIGhhc1BlbmRpbmdVcGRhdGUoKSBjb25zdCB7IHJldHVybiAhIW1f
cGVuZGluZ0NoYW5nZVR5cGU7IH0KKyAgICB2b2lkIGZsdXNoUGVuZGluZ0NoYW5nZXMoKTsKIAog
cHJpdmF0ZToKLSAgICBlbnVtIFVwZGF0ZUZsYWcgeyBOb1VwZGF0ZSA9IDAsIE9wdGltaXplZFVw
ZGF0ZSwgRnVsbFVwZGF0ZSB9OwotICAgIGJvb2wgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBk
YXRlRmxhZyk7CisgICAgdm9pZCB1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhDaGFuZ2VUeXBlKTsK
IAogICAgIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVT
aGVldD4+Jik7CiAKQEAgLTEwNiwxMCArOTksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgUmVzZXQs
CiAgICAgICAgIEFkZGl0aXZlCiAgICAgfTsKLSAgICBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBh
bmFseXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+PiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVj
YWxjKTsKKyAgICBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBhbmFseXplU3R5bGVTaGVldENoYW5n
ZShDaGFuZ2VUeXBlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgbmV3U3R5
bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKICAgICB2b2lkIHVwZGF0
ZVN0eWxlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBTdHlsZVJlc29s
dmVyVXBkYXRlVHlwZSk7CiAKLSAgICB2b2lkIG9wdGltaXplZFVwZGF0ZVRpbWVyRmlyZWQoKTsK
KyAgICB2b2lkIHBlbmRpbmdDaGFuZ2VUaW1lckZpcmVkKCk7CiAKICAgICBEb2N1bWVudCYgbV9k
b2N1bWVudDsKICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRyIH07CkBAIC0x
MTcsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiBt
X3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0Pj4gbV9hY3RpdmVTdHlsZVNoZWV0czsKIAotICAgIFRpbWVyIG1fb3B0aW1pemVkVXBk
YXRlVGltZXI7CisgICAgVGltZXIgbV9wZW5kaW5nQ2hhbmdlVGltZXI7CiAKICAgICAvLyBUaGlz
IGlzIGEgbWlycm9yIG9mIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMgdGhhdCBnZXRzIHBvcHVs
YXRlZCBvbiBkZW1hbmQgZm9yIGFjdGl2ZVN0eWxlU2hlZXRzQ29udGFpbnMoKS4KICAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4gbV93ZWFr
Q29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwOwpAQCAtMTI5LDcgKzEyMiw3
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcGVuZGluZ1N0eWxlU2hlZXRDb3VudCB7IDAgfTsKICAg
ICBib29sIG1fZGlkQ2FsY3VsYXRlU3R5bGVSZXNvbHZlciB7IGZhbHNlIH07CiAKLSAgICBVcGRh
dGVGbGFnIG1fcGVuZGluZ1VwZGF0ZVR5cGUgeyBOb1VwZGF0ZSB9OworICAgIE9wdGlvbmFsPENo
YW5nZVR5cGU+IG1fcGVuZGluZ0NoYW5nZVR5cGU7CiAKICAgICBMaXN0SGFzaFNldDxOb2RlKj4g
bV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM1NSw3ICsxMzU1LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29u
dGVudExhbmd1YWdlKGNvbnN0IAogICAgIG1fY29udGVudExhbmd1YWdlID0gbGFuZ3VhZ2U7CiAK
ICAgICAvLyBSZWNhbGN1bGF0ZSBzdHlsZSBzbyBsYW5ndWFnZSBpcyB1c2VkIHdoZW4gc2VsZWN0
aW5nIHRoZSBpbml0aWFsIGZvbnQuCi0gICAgbV9hdXRob3JTdHlsZVNoZWV0cy0+ZGlkQ2hhbmdl
KERlZmVyUmVjYWxjU3R5bGUpOworICAgIG1fYXV0aG9yU3R5bGVTaGVldHMtPmRpZENoYW5nZShB
dXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsK
IH0KIAogdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTg1OSw3ICsxODU5LDcgQEAgdm9pZCBEb2N1bWVudDo6
cmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZQogICAgIC8vIHJlLWF0dGFjaGluZyBvdXIgY29udGFp
bmluZyBpZnJhbWUsIHdoaWNoIHdoZW4gYXNrZWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmlzVVJM
QWxsb3dlZAogICAgIC8vIGhpdHMgYSBudWxsLWRlcmVmZXJlbmNlIGR1ZSB0byBzZWN1cml0eSBj
b2RlIGFsd2F5cyBhc3N1bWluZyB0aGUgZG9jdW1lbnQgaGFzIGEgU2VjdXJpdHlPcmlnaW4uCiAK
LSAgICBhdXRob3JTdHlsZVNoZWV0cygpLmZsdXNoUGVuZGluZ1VwZGF0ZXMoKTsKKyAgICBhdXRo
b3JTdHlsZVNoZWV0cygpLmZsdXNoUGVuZGluZ0NoYW5nZXMoKTsKIAogICAgIGZyYW1lVmlldy53
aWxsUmVjYWxjU3R5bGUoKTsKIApAQCAtMTk1OSwxMyArMTk1OSwxMiBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKICAgICBpZiAoIXZpZXcoKSB8fCB2aWV3KCktPmlzSW5S
ZW5kZXJUcmVlTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRob3JTdHls
ZVNoZWV0cygpLmhhc1BlbmRpbmdVcGRhdGUoKSkKLSAgICAgICAgYXV0aG9yU3R5bGVTaGVldHMo
KS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJZk5lZWRlZCk7CisgICAgYXV0aG9yU3R5bGVTaGVldHMo
KS5mbHVzaFBlbmRpbmdDaGFuZ2VzKCk7CiAKICAgICBpZiAoIW5lZWRzU3R5bGVSZWNhbGMoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVjYWxjU3R5bGUoU3R5bGU6Ok5vQ2hhbmdlKTsKKyAg
ICByZWNhbGNTdHlsZSgpOwogfQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQoKQpAQCAt
MjAxNCw3ICsyMDEzLDggQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
ZwogICAgICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5T3JGcmFtZXNldCgpOwog
ICAgICAgICBpZiAoYm9keUVsZW1lbnQgJiYgIWJvZHlFbGVtZW50LT5yZW5kZXJlcigpICYmIG1f
cGVuZGluZ1NoZWV0TGF5b3V0ID09IE5vTGF5b3V0V2l0aFBlbmRpbmdTaGVldHMpIHsKICAgICAg
ICAgICAgIG1fcGVuZGluZ1NoZWV0TGF5b3V0ID0gRGlkTGF5b3V0V2l0aFBlbmRpbmdTaGVldHM7
Ci0gICAgICAgICAgICBhdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUlt
bWVkaWF0ZWx5KTsKKyAgICAgICAgICAgIGF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1
dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwor
ICAgICAgICAgICAgcmVjYWxjU3R5bGUoU3R5bGU6OkZvcmNlKTsKICAgICAgICAgfSBlbHNlIGlm
IChtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUpCiAgICAgICAgICAgICAvLyBJZiBuZXcg
bm9kZXMgaGF2ZSBiZWVuIGFkZGVkIG9yIHN0eWxlIHJlY2FsYyBoYXMgYmVlbiBkb25lIHdpdGgg
c3R5bGUgc2hlZXRzIHN0aWxsIHBlbmRpbmcsIHNvbWUgbm9kZXMgCiAgICAgICAgICAgICAvLyBt
YXkgbm90IGhhdmUgaGFkIHRoZWlyIHJlYWwgc3R5bGUgY2FsY3VsYXRlZCB5ZXQuIE5vcm1hbGx5
IHRoaXMgZ2V0cyBjbGVhbmVkIHdoZW4gc3R5bGUgc2hlZXRzIGFycml2ZSAKQEAgLTMxNTEsNyAr
MzE1MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZFJlbW92ZUFsbFBlbmRpbmdTdHlsZXMKIHsKICAg
ICBtX25lZWRzTm90aWZ5UmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQgPSBmYWxzZTsKIAotICAg
IGF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGVJZk5lZWRlZCk7
CisgICAgYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNo
YW5nZVR5cGU6OkFjdGl2ZVNldCk7CiAKICAgICBpZiAobV9wZW5kaW5nU2hlZXRMYXlvdXQgPT0g
RGlkTGF5b3V0V2l0aFBlbmRpbmdTaGVldHMpIHsKICAgICAgICAgbV9wZW5kaW5nU2hlZXRMYXlv
dXQgPSBJZ25vcmVMYXlvdXRXaXRoUGVuZGluZ1NoZWV0czsKQEAgLTMxODIsNyArMzE4Miw3IEBA
IGJvb2wgRG9jdW1lbnQ6OnVzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkKICAgICBBU1NFUlQoIW1f
aW5TdHlsZVJlY2FsYyk7CiAKICAgICBhdXRvJiBhdXRob3JTaGVldHMgPSBjb25zdF9jYXN0PEF1
dGhvclN0eWxlU2hlZXRzJj4oYXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgYXV0aG9yU2hlZXRz
LmZsdXNoUGVuZGluZ1VwZGF0ZXMoKTsKKyAgICBhdXRob3JTaGVldHMuZmx1c2hQZW5kaW5nQ2hh
bmdlcygpOwogICAgIHJldHVybiBhdXRob3JTaGVldHMudXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0
eSgpOwogfQogCkBAIC0zMjI2LDcgKzMyMjYsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0
cEVxdWl2KGNvbnN0IFN0CiAgICAgICAgIC8vIC1kd2gKICAgICAgICAgYXV0aG9yU3R5bGVTaGVl
dHMoKS5zZXRTZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1lKGNvbnRlbnQpOwogICAgICAgICBhdXRo
b3JTdHlsZVNoZWV0cygpLnNldFByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lKGNvbnRlbnQpOwot
ICAgICAgICBhdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsK
KyAgICAgICAgYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6
OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBIVFRQSGVhZGVyTmFtZTo6UmVmcmVzaDogewpAQCAtMzUzMCw3ICszNTMwLDcg
QEAgU3RyaW5nIERvY3VtZW50OjpzZWxlY3RlZFN0eWxlc2hlZXRTZXQoKQogdm9pZCBEb2N1bWVu
dDo6c2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KGNvbnN0IFN0cmluZyYgYVN0cmluZykKIHsKICAg
ICBhdXRob3JTdHlsZVNoZWV0cygpLnNldFNlbGVjdGVkU3R5bGVzaGVldFNldE5hbWUoYVN0cmlu
Zyk7Ci0gICAgYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7
CisgICAgYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNo
YW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OmV2YWx1YXRlTWVkaWFRdWVyeUxpc3QoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V4dGVu
c2lvblN0eWxlU2hlZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXh0
ZW5zaW9uU3R5bGVTaGVldHMuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OmNsZWFyUGFnZVVzZXIKIHsKICAgICBp
ZiAobV9wYWdlVXNlclNoZWV0KSB7CiAgICAgICAgIG1fcGFnZVVzZXJTaGVldCA9IG51bGxwdHI7
Ci0gICAgICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJS
ZWNhbGNTdHlsZSk7CisgICAgICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRD
aGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRh
dGlvbik7CiAgICAgfQogfQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVT
aGVldHM6OnVwZGF0ZVBhZ2VVc2UKIHsKICAgICBjbGVhclBhZ2VVc2VyU2hlZXQoKTsKICAgICBp
ZiAocGFnZVVzZXJTaGVldCgpKQotICAgICAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRz
KCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICBtX2RvY3VtZW50
LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VU
eXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiBjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OmluamVjdGVkVXNlclN0eWxl
U2hlZXRzKCkgY29uc3QKQEAgLTE1NSwyMSArMTU1LDIxIEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVT
aGVldHM6OmludmFsaWRhdGVJbmoKICAgICBtX2luamVjdGVkU3R5bGVTaGVldENhY2hlVmFsaWQg
PSBmYWxzZTsKICAgICBpZiAobV9pbmplY3RlZFVzZXJTdHlsZVNoZWV0cy5pc0VtcHR5KCkgJiYg
bV9pbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNT
dHlsZSk7CisgICAgbV9kb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShBdXRo
b3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKIH0K
IAogdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkVXNlclN0eWxlU2hlZXQoUmVmPFN0eWxl
U2hlZXRDb250ZW50cz4mJiB1c2VyU2hlZXQpCiB7CiAgICAgQVNTRVJUKHVzZXJTaGVldC5nZXQo
KS5pc1VzZXJTdHlsZVNoZWV0KCkpOwogICAgIG1fdXNlclN0eWxlU2hlZXRzLmFwcGVuZChDU1NT
dHlsZVNoZWV0OjpjcmVhdGUoV1RGTW92ZSh1c2VyU2hlZXQpLCBtX2RvY3VtZW50KSk7Ci0gICAg
bV9kb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVk
aWF0ZWx5KTsKKyAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1
dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwog
fQogCiB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjphZGRBdXRob3JTdHlsZVNoZWV0Rm9yVGVz
dGluZyhSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGF1dGhvclNoZWV0KQogewogICAgIEFTU0VS
VCghYXV0aG9yU2hlZXQuZ2V0KCkuaXNVc2VyU3R5bGVTaGVldCgpKTsKICAgICBtX2F1dGhvclN0
eWxlU2hlZXRzRm9yVGVzdGluZy5hcHBlbmQoQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdURk1vdmUo
YXV0aG9yU2hlZXQpLCBtX2RvY3VtZW50KSk7Ci0gICAgbV9kb2N1bWVudC5hdXRob3JTdHlsZVNo
ZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICBtX2RvY3VtZW50
LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VU
eXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRz
OjptYXliZUFkZENvbnRlCiAKIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnN0eWxlUmVzb2x2
ZXJDaGFuZ2VkVGltZXJGaXJlZCgpCiB7Ci0gICAgbV9kb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0
cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICBtX2RvY3VtZW50LmF1
dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBl
OjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB2b2lkIEV4dGVuc2lvblN0eWxlU2hl
ZXRzOjpkZXRhY2hGcm9tRG9jdW1lbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0lubGlu
ZVN0eWxlU2hlZXRPd25lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0lu
bGluZVN0eWxlU2hlZXRPd25lci5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpyZW1vdmVkRnJvbUQKIAogICAg
IC8vIElmIHdlJ3JlIGluIGRvY3VtZW50IHRlYXJkb3duLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8g
ZG8gYW55IG5vdGlmaWNhdGlvbiBvZiBvdXIgc2hlZXQncyByZW1vdmFsLgogICAgIGlmIChkb2N1
bWVudC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0gICAgICAgIGRvY3VtZW50LmF1dGhvclN0eWxl
U2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBkb2N1bWVudC5h
dXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlw
ZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKIH0KIAogdm9pZCBJbmxpbmVTdHlsZVNoZWV0
T3duZXI6OmNsZWFyRG9jdW1lbnREYXRhKERvY3VtZW50JiwgRWxlbWVudCYgZWxlbWVudCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZp
c2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpyZW1vdmVkRnJvbSgKIAogICAgIC8vIElmIHdlJ3JlIGluIGRvY3VtZW50IHRl
YXJkb3duLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IG5vdGlmaWNhdGlvbiBvZiBvdXIg
c2hlZXQncyByZW1vdmFsLgogICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUo
KSkKLSAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZl
clJlY2FsY1N0eWxlKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRp
ZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJl
dGF0aW9uKTsKIH0KIAogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmZpbmlzaFBhcnNpbmdD
aGlsZHJlbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lvbiAyMDYz
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnVwZGF0ZVN0eWxlKCkKICAgICBp
ZiAoIW1fYXV0aG9yU3R5bGVTaGVldHMpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTog
TWFrZSBvcHRpbWl6ZWQgdXBkYXRlZCB3b3JrLgotICAgIG1fYXV0aG9yU3R5bGVTaGVldHMtPmRp
ZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICBtX2F1dGhvclN0eWxlU2hlZXRzLT5kaWRD
aGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRh
dGlvbik7CiB9CiAKIFN0cmluZyBTaGFkb3dSb290Ojppbm5lckhUTUwoKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMjA2MzUxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkU3Rh
dGUoYgogICAgICAgICBpZiAoIW1fc2hlZXQgJiYgbV9kaXNhYmxlZFN0YXRlID09IEVuYWJsZWRW
aWFTY3JpcHQpCiAgICAgICAgICAgICBwcm9jZXNzKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNT
dHlsZSk7CisgICAgICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hh
bmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRp
b24pOwogICAgIH0KIH0KIApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb24KICAgICAgICAgbV9tZWRpYSA9IHZhbHVlLnN0cmluZygpLmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgICAgIHByb2Nlc3MoKTsKICAgICAgICAgaWYg
KG1fc2hlZXQgJiYgIWlzRGlzYWJsZWQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYXV0aG9y
U3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgICAgICBk
b2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRz
OjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChuYW1lID09IGRpc2FibGVkQXR0cikgewpAQCAtMjgzLDcgKzI4Myw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICB9IGVsc2UgaWYgKG1fc2hl
ZXQpIHsKICAgICAgICAgLy8gd2Ugbm8gbG9uZ2VyIGNvbnRhaW4gYSBzdHlsZXNoZWV0LCBlLmcu
IHBlcmhhcHMgcmVsIG9yIHR5cGUgd2FzIGNoYW5nZWQKICAgICAgICAgY2xlYXJTaGVldCgpOwot
ICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVj
YWxjU3R5bGUpOworICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hh
bmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRp
b24pOwogICAgIH0KIH0KIApAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
OjpyZW1vdmVkRnJvbShDb250YWkKICAgICAgICAgcmVtb3ZlUGVuZGluZ1NoZWV0KFJlbW92ZVBl
bmRpbmdTaGVldE5vdGlmeUxhdGVyKTsKIAogICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENo
YW5nZShEZWZlclJlY2FsY1N0eWxlSWZOZWVkZWQpOworICAgICAgICBkb2N1bWVudCgpLmF1dGhv
clN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpB
Y3RpdmVTZXQpOwogfQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxk
cmVuKCkKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlUGVu
ZGluZ1NoZWV0CiAKICAgICBpZiAodHlwZSA9PSBJbmFjdGl2ZVNoZWV0KSB7CiAgICAgICAgIC8v
IERvY3VtZW50IGp1c3QgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgc2hlZXQgZm9yIGV4cG9zdXJl
IHRocm91Z2ggZG9jdW1lbnQuc3R5bGVTaGVldHMKLSAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JT
dHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlSWZOZWVkZWQpOworICAgICAg
ICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hl
ZXRzOjpDaGFuZ2VUeXBlOjpBY3RpdmVTZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
NjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjbwogICAgICAgICBpZiAoc2hlZXQoKSkgewogICAgICAgICAgICAgc2hlZXQoKS0+
c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25T
eW50YXgodmFsdWUpKTsKICAgICAgICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQo
KS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5hdXRo
b3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhv
clN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHR5cGVBdHRyKQogICAgICAgICBtX3N0eWxl
U2hlZXRPd25lci5zZXRDb250ZW50VHlwZSh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg4OSw3ICs4ODksNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBz
ZXVkb1N0YXRlCiAgICAgICAgIG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5zZXQobm9kZUlk
LCBmb3JjZWRQc2V1ZG9TdGF0ZSk7CiAgICAgZWxzZQogICAgICAgICBtX25vZGVJZFRvRm9yY2Vk
UHNldWRvU3RhdGUucmVtb3ZlKG5vZGVJZCk7Ci0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5hdXRo
b3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICBl
bGVtZW50LT5kb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0
eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0
KQpAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXRQc2V1
ZG9TdGF0ZQogCiAgICAgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmNsZWFyKCk7CiAgICAg
Zm9yIChhdXRvJiBkb2N1bWVudCA6IGRvY3VtZW50c1RvQ2hhbmdlKQotICAgICAgICBkb2N1bWVu
dC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7
CisgICAgICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShBdXRob3JT
dHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRN
ZWRpCiAgICAgbV9lbXVsYXRlZE1lZGlhID0gbWVkaWE7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50KSB7Ci0g
ICAgICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgZG9jdW1lbnQtPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlk
Q2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0
YXRpb24pOwogICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CiAgICAgfQogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBG
cmFtZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgYwogICAgIG1fZG9jLT5zZXRQcmludGlu
ZyhwcmludGluZyk7CiAgICAgdmlldygpLT5hZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyhwcmlu
dGluZyk7CiAKLSAgICBtX2RvYy0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxj
U3R5bGVJbW1lZGlhdGVseSk7CisgICAgbV9kb2MtPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hh
bmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRp
b24pOwogICAgIGlmIChzaG91bGRVc2VQcmludGluZ0xheW91dCgpKSB7CiAgICAgICAgIHZpZXco
KS0+Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uKHBhZ2VTaXplLCBvcmlnaW5hbFBhZ2VTaXplLCBt
YXhpbXVtU2hyaW5rUmF0aW8sIHNob3VsZEFkanVzdFZpZXdTaXplKTsKICAgICB9IGVsc2UgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMjA2MzUxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAxLDcg
KzEzMDEsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAg
ICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudC5zdHlsZVJlc29sdmVy
SWZFeGlzdHMoKTsKICAgICAgICAgaWYgKCFzdHlsZVJlc29sdmVyIHx8IHN0eWxlUmVzb2x2ZXIt
Pmhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpKSB7CiAgICAgICAgICAg
ICBMT0coTGF5b3V0LCAiICBoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2Us
IGVucXVldWVpbmcgc3R5bGUgcmVjYWxjIik7Ci0gICAgICAgICAgICBkb2N1bWVudC5hdXRob3JT
dHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpD
aGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgaW5zdHJ1bWVudGF0aW9uIGV2ZW50IGlzIG5vdCBzdHJpY3RseSBhY2N1cmF0ZSBz
aW5jZSBjYWNoZWQgbWVkaWEgcXVlcnkgcmVzdWx0cyBkbyBub3QgcGVyc2lzdCBhY3Jvc3MgU3R5
bGVSZXNvbHZlciByZWJ1aWxkcy4KICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoZG9jdW1lbnQpOwogICAgICAgICB9IGVsc2UKQEAg
LTM0OTYsNyArMzQ5Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRQYWdpbmF0aW9uKGNvbnN0IFBh
Z2kKIAogICAgIG1fcGFnaW5hdGlvbiA9IHBhZ2luYXRpb247CiAKLSAgICBmcmFtZSgpLmRvY3Vt
ZW50KCktPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOwor
ICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0
aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiB9
CiAKIEludFJlY3QgRnJhbWVWaWV3Ojp3aW5kb3dDbGlwUmVjdCgpIGNvbnN0CkBAIC00OTY1LDcg
KzQ5NjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmllCiAgICAg
aWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSkgewogICAgICAgICAv
LyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgdXBkYXRlVmlld3BvcnRVbml0c09uUmVz
aXplKCksIGJ1dCBzeW5jaHJvbm91c2x5CiAgICAgICAgIC8vIGRpcnR5aW5nIHN0eWxlIGhlcmUg
Y2F1c2VzIGFzc2VydGlvbnMgb24gaU9TIChyZGFyOi8vcHJvYmxlbS8xOTk5ODE2NikuCi0gICAg
ICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0
eWxlKTsKKyAgICAgICAgZG9jdW1lbnQtPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1
dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwog
ICAgIH0KIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjA2MzUxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI0LDcg
KzQyNCw3IEBAIHZvaWQgUGFnZTo6c2V0Vmlld01vZGUoVmlld01vZGUgdmlld01vZGUKICAgICAg
ICAgbV9tYWluRnJhbWUtPnZpZXcoKS0+Zm9yY2VMYXlvdXQoKTsKIAogICAgIGlmIChtX21haW5G
cmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9tYWluRnJhbWUtPmRvY3VtZW50KCktPmF1dGhv
clN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAg
ICBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2Uo
QXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEpCiAKQEAgLTUwMiw3ICs1
MDIsNyBAQCB2b2lkIFBhZ2U6OnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lCiB7CiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmF1dGhvclN0eWxlU2hl
ZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICAgICAgZG9jdW1lbnQt
PmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VU
eXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogICAgIH0KIH0KIApAQCAtMTE2Myw3ICsx
MTYzLDcgQEAgdm9pZCBQYWdlOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0QwogICAgICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGRvY3VtZW50
LT5leHRlbnNpb25TdHlsZVNoZWV0cygpLmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNo
ZSgpOwotICAgICAgICBkb2N1bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVm
ZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRp
ZENoYW5nZShBdXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJl
dGF0aW9uKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZv
aWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UKICAgICAgICAgfQogICAgIH0K
IAotICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNh
bGNTdHlsZSk7CisgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShB
dXRob3JTdHlsZVNoZWV0czo6Q2hhbmdlVHlwZTo6Q29udGVudHNPckludGVycHJldGF0aW9uKTsK
IH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdGb250RmFjZUVsZW1l
bnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQpAQCAtMjkyLDcgKzI5
Miw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZW1vdmVkRnJvbShDb24KICAgICAgICAg
ZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkudW5yZWdpc3RlclNWR0ZvbnRGYWNlRWxl
bWVudCh0aGlzKTsKICAgICAgICAgbV9mb250RmFjZVJ1bGUtPm11dGFibGVQcm9wZXJ0aWVzKCku
Y2xlYXIoKTsKIAotICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hh
bmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hl
ZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09y
SW50ZXJwcmV0YXRpb24pOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlQoIW1fZm9udEVsZW1l
bnQpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAkocmV2aXNpb24g
MjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgWE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1QKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRv
IHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CiAgICAgbV9kb2N1
bWVudC5nZXRFbGVtZW50QnlJZChTdHJpbmcoQVNDSUlMaXRlcmFsKCJ4bWwtdmlld2VyLXN0eWxl
IikpKS0+YXBwZW5kQ2hpbGQodGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgbV9kb2N1bWVu
dC5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsK
KyAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxl
U2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
MCw3ICsyMDAsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmQoKQogICAgICAgICBpbnNl
cnRFcnJvck1lc3NhZ2VCbG9jaygpOwogICAgIGVsc2UgewogICAgICAgICB1cGRhdGVMZWFmVGV4
dE5vZGUoKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFu
Z2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGRvY3VtZW50KCktPmF1dGhvclN0
eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250
ZW50c09ySW50ZXJwcmV0YXRpb24pOwogICAgIH0KIAogICAgIGlmIChpc1BhcnNpbmcoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4
Nyw3ICsxMzg3LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQoKQogICAgICAgICBk
b2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1T
b3VyY2U+KGRvYykpOwogCiAgICAgICAgIGRvY3VtZW50KCktPnNldFBhcnNpbmcoZmFsc2UpOyAv
LyBNYWtlIHRoZSBkb2N1bWVudCB0aGluayBpdCdzIGRvbmUsIHNvIGl0IHdpbGwgYXBwbHkgWFNM
IHN0eWxlc2hlZXRzLgotICAgICAgICBkb2N1bWVudCgpLT5hdXRob3JTdHlsZVNoZWV0cygpLmRp
ZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+YXV0
aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoQXV0aG9yU3R5bGVTaGVldHM6OkNoYW5nZVR5cGU6
OkNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbik7CiAKICAgICAgICAgLy8gc3R5bGVSZXNvbHZlckNo
YW5nZWQoKSBjYWxsIGNhbiBkZXRhY2ggdGhlIHBhcnNlciBhbmQgbnVsbCBvdXQgaXRzIGRvY3Vt
ZW50LgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIGp1c3QgYmFpbCBvdXQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDYzNTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOS0yNCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQXV0aG9yU3R5bGVTaGVldHMg
c2hvdWxkbid0IHRyaWdnZXIgc3luY2hyb25vdXMgc3R5bGUgcmVzb2x1dGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjUzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgcmVhcHBseVN0eWxlc10pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRpbmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9n
aWNhbEhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNo
cmlua1JhdGlvOmFkanVzdFZpZXdTaXplOnBhZ2luYXRlU2NyZWVuQ29udGVudDpdKToKKwogMjAx
Ni0wOS0yNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92
ZSBzdHlsZXNoZWV0IGNoYW5nZSBsb2dpYyBmcm9tIERvY3VtZW50IHRvIEF1dGhvclN0eWxlU2hl
ZXRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlz
aW9uIDIwNjM1MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2MTEsMTAgKzM2MTEsMTIgQEAgLSAodm9pZClyZWFwcGx5U3R5
bGVzCiAgICAgZG91YmxlIHN0YXJ0ID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7CiAjZW5k
aWYKIAotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAg
ICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5n
ZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKLSAgICAKLSNpZmRlZiBMT0dfVElNRVMgICAgICAg
IAorICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgeworICAg
ICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdl
KEF1dGhvclN0eWxlU2hlZXRzOjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24p
OworICAgICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsK
KyAgICB9CisKKyNpZmRlZiBMT0dfVElNRVMKICAgICBkb3VibGUgdGhpc1RpbWUgPSBDRkFic29s
dXRlVGltZUdldEN1cnJlbnQoKSAtIHN0YXJ0OwogICAgIExPRyhUaW1pbmcsICIlcyBhcHBseSBz
dHlsZSBzZWNvbmRzID0gJWYiLCBbc2VsZiBVUkxdLCB0aGlzVGltZSk7CiAjZW5kaWYKQEAgLTUw
MDUsNyArNTAwNyw3IEBAIC0gKHZvaWQpX3NldFByaW50aW5nOihCT09MKXByaW50aW5nIG1pbmkK
IAogICAgICAgICAgICAgZG9jdW1lbnQtPnNldFBhZ2luYXRlZEZvclNjcmVlbihfcHJpdmF0ZS0+
cGFnaW5hdGVTY3JlZW5Db250ZW50KTsKICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRQcmludGlu
ZyhfcHJpdmF0ZS0+cHJpbnRpbmcpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmF1dGhvclN0eWxl
U2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICAgICAg
ZG9jdW1lbnQtPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKEF1dGhvclN0eWxlU2hlZXRz
OjpDaGFuZ2VUeXBlOjpDb250ZW50c09ySW50ZXJwcmV0YXRpb24pOwogICAgICAgICB9CiAgICAg
fQogCg==
</data>
<flag name="review"
          id="312938"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289776</attachid>
            <date>2016-09-25 05:25:40 -0700</date>
            <delta_ts>2016-09-25 06:34:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>authorstylesheets-didchange-enum-4.patch</filename>
            <type>text/plain</type>
            <size>38609</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBAQAorMjAxNi0wOS0yNCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQXV0aG9yU3R5bGVTaGVldHMg
c2hvdWxkbid0IHRyaWdnZXIgc3luY2hyb25vdXMgc3R5bGUgcmVzb2x1dGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjUzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEF1dGhvclN0eWxlU2hlZXRzOjpk
aWRDaGFuZ2UoKSB0b29rIGZvdXIgZGlmZmVyZW50IGVudW0gdmFsdWVzLCB0d28gb2Ygd2hpY2gg
dHJpZ2dlcmVkCisgICAgICAgIGEgc3luY2hyb25vdXMgc3R5bGUgcmVzb2x1dGlvbi4gVGhpcyBp
cyBhbG1vc3QgYWx3YXlzIHVubmVjZXNzYXJ5IGFzIGFueSBzdWJzZXF1ZW50CisgICAgICAgIGNh
bGwgdGhhdCByZXF1aXJlcyB1cC10by1kYXRlIHN0eWxlIG9yIGxheW91dCB3aWxsIHBlcmZvcm0g
aXQuIEluIHRoZSBmZXcgY2FzZXMgd2hlcmUKKyAgICAgICAgaXQgaXMgYWN0dWFsbHkgbmVlZGVk
IHRoZSBjbGllbnQgY2FuIGp1c3QgZG8gaXQgbWFudWFsbHkuCisKKyAgICAgICAgVGhlIHBhdGNo
IGFsc28gcmVwbGFjZXMgdGhlIHJlbWFpbmluZyB0d28gZW51bSB2YWx1ZXMgd2l0aCBmdW5jdGlv
bnM6CisKKyAgICAgICAgICAgIHZvaWQgZGlkQ2hhbmdlQ2FuZGlkYXRlc0ZvckFjdGl2ZVNldCgp
OworICAgICAgICAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsK
KworICAgICAgICBUaGUgZmlyc3QgaW5kaWNhdGVzIHRoYXQgdGhlIHNldCBvZiBhY3RpdmUgc3R5
bGVzaGVldHMgbWlnaHQgaGF2ZSBjaGFuZ2VkIGFuZCBuZWVkcyB0byBiZSByZWNvbXB1dGVkLgor
ICAgICAgICBUaGUgc2Vjb25kcyBvbmUgaW5kaWNhdGVzIHRoYXQgZWl0aGVyIHRoZSBjb250ZW50
IG9mIHNvbWUgc3R5bGVzaGVldCBoYXMgY2hhbmdlZCBvciB0aGF0IHRoZSBlbnZpcm9ubWVudAor
ICAgICAgICB3aGVyZSB3ZSBpbnRlcnByZXQgdGhlIHNoZWV0cyBoYXMgc29tZWhvdyBjaGFuZ2Vk
LgorCisgICAgICAgIFRoZSBleGlzdGluZyAiQXNOZWVkZWQiIHZhbHVlcyBtYXAgdG8gZGlkQ2hh
bmdlQ2FuZGlkYXRlc0ZvckFjdGl2ZVNldCgpIGFuZCB0aGUgcmVzdCBtYXAgdG8KKyAgICAgICAg
ZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCkuIFRoaXMgYWxzbyBtYWtlcyBpdCBv
YnZpb3VzIHRoYXQgc29tZSBjYWxsIHNpdGVzIHVzZSB0aGUgd3JvbmcgdmFsdWUuCisgICAgICAg
IFRoZSBwYXRjaCBkb2Vzbid0IGFkZHJlc3MgdGhlc2UgY2FzZXMuCisKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpkaWRN
dXRhdGVSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y2xlYXJPd25lck5vZGUpOgorICAg
ICAgICAqIGRvbS9BdXRob3JTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
b3JTdHlsZVNoZWV0czo6QXV0aG9yU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aG9yU3R5bGVTaGVldHM6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAg
IChXZWJDb3JlOjpBdXRob3JTdHlsZVNoZWV0czo6Zmx1c2hQZW5kaW5nQ2hhbmdlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRob3JTdHlsZVNoZWV0czo6c2NoZWR1bGVBY3RpdmVTZXRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVldHM6OmRpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRob3JTdHlsZVNoZWV0czo6cGVuZGluZ0NoYW5nZVRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVldHM6OmZsdXNoUGVuZGluZ1VwZGF0
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVldHM6OnNjaGVk
dWxlT3B0aW1pemVkVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhvclN0
eWxlU2hlZXRzOjpvcHRpbWl6ZWRVcGRhdGVUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vQXV0aG9yU3R5bGVTaGVldHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhvclN0eWxl
U2hlZXRzOjpoYXNQZW5kaW5nVXBkYXRlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbnRlbnRMYW5ndWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnVzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldFNlbGVjdGVkU3R5bGVzaGVldFNldCk6CisgICAgICAgICogZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRz
OjpjbGVhclBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVT
aGVldHM6OnVwZGF0ZVBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
U3R5bGVTaGVldHM6OmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OmFkZEF1dGhvclN0eWxlU2hlZXRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjpzdHls
ZVJlc29sdmVyQ2hhbmdlZFRpbWVyRmlyZWQpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNo
ZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpy
ZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6cmVtb3ZlZEZy
b20pOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1Jvb3Q6OnVwZGF0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCk6CisgICAgICAgICogaHRtbC9IVE1M
U3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0UHNldWRvU3RhdGVz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAgICAg
ICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0UHJpbnRpbmcp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0UGFnaW5hdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpzZXRWaWV3TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXROZWVkc1Jl
Y2FsY1N0eWxlSW5BbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW52YWxpZGF0
ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMpOgorICAgICAgICAqIHN2Zy9TVkdG
b250RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50
OjpyZWJ1aWxkRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50
OjpyZW1vdmVkRnJvbSk6CisgICAgICAgICogeG1sL1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToK
KyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50
UGFyc2VyOjpkb0VuZCk6CisKIDIwMTYtMDktMjMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgc3R5bGVzaGVldCBjaGFuZ2UgbG9naWMgZnJvbSBEb2N1
bWVudCB0byBBdXRob3JTdHlsZVNoZWV0cwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcAkocmV2aXNpb24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTEgKzE3OSwxMSBAQCB2b2lkIENTU1N0
eWxlU2hlZXQ6OmRpZE11dGF0ZVJ1bGVzKFJ1bGVNCiAgICAgICAgICAgICAgICAgcmVzb2x2ZXIt
PmFkZEtleWZyYW1lU3R5bGUoKmluc2VydGVkS2V5ZnJhbWVzUnVsZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgb3duZXItPmF1dGhvclN0eWxlU2hlZXRzKCkuc2No
ZWR1bGVPcHRpbWl6ZWRVcGRhdGUoKTsKKyAgICAgICAgb3duZXItPmF1dGhvclN0eWxlU2hlZXRz
KCkuc2NoZWR1bGVBY3RpdmVTZXRVcGRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG93bmVyLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxl
KTsKKyAgICBvd25lci0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2VDb250ZW50c09ySW50
ZXJwcmV0YXRpb24oKTsKIAogICAgIG1fbXV0YXRlZFJ1bGVzID0gdHJ1ZTsKIH0KQEAgLTE5Myw3
ICsxOTMsNyBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZSgpCiAgICAgRG9jdW1lbnQq
IG93bmVyID0gb3duZXJEb2N1bWVudCgpOwogICAgIGlmICghb3duZXIpCiAgICAgICAgIHJldHVy
bjsKLSAgICBvd25lci0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNT
dHlsZSk7CisgICAgb3duZXItPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNP
ckludGVycHJldGF0aW9uKCk7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2xlYXJPd25lck5v
ZGUoKQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2xlYXJPd25lck5v
ZGUoKQogICAgIG1fb3duZXJOb2RlID0gMDsKICAgICBpZiAoIW93bmVyKQogICAgICAgICByZXR1
cm47Ci0gICAgb3duZXItPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxj
U3R5bGVJZk5lZWRlZCk7CisgICAgb3duZXItPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdl
Q2FuZGlkYXRlc0ZvckFjdGl2ZVNldCgpOwogfQogCiB2b2lkIENTU1N0eWxlU2hlZXQ6OnJlYXR0
YWNoQ2hpbGRSdWxlQ1NTT01XcmFwcGVycygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQXV0
aG9yU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BdXRo
b3JTdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9BdXRob3JTdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE0ICs1NywxNCBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBBdXRob3JTdHlsZVNoZWV0czo6QXV0aG9y
U3R5bGVTaGVldHMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVu
dCkKLSAgICAsIG1fb3B0aW1pemVkVXBkYXRlVGltZXIoKnRoaXMsICZBdXRob3JTdHlsZVNoZWV0
czo6b3B0aW1pemVkVXBkYXRlVGltZXJGaXJlZCkKKyAgICAsIG1fcGVuZGluZ1VwZGF0ZVRpbWVy
KCp0aGlzLCAmQXV0aG9yU3R5bGVTaGVldHM6OnBlbmRpbmdVcGRhdGVUaW1lckZpcmVkKQogewog
fQogCiBBdXRob3JTdHlsZVNoZWV0czo6QXV0aG9yU3R5bGVTaGVldHMoU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCkKICAgICA6IG1fZG9jdW1lbnQoc2hhZG93Um9vdC5kb2N1bWVudFNjb3BlKCkpCiAg
ICAgLCBtX3NoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCi0gICAgLCBtX29wdGltaXplZFVwZGF0ZVRp
bWVyKCp0aGlzLCAmQXV0aG9yU3R5bGVTaGVldHM6Om9wdGltaXplZFVwZGF0ZVRpbWVyRmlyZWQp
CisgICAgLCBtX3BlbmRpbmdVcGRhdGVUaW1lcigqdGhpcywgJkF1dGhvclN0eWxlU2hlZXRzOjpw
ZW5kaW5nVXBkYXRlVGltZXJGaXJlZCkKIHsKIH0KIApAQCAtMjEzLDE0ICsyMTMsMTIgQEAgdm9p
ZCBBdXRob3JTdHlsZVNoZWV0czo6Y29sbGVjdEFjdGl2ZVN0eQogICAgIH0KIH0KIAotQXV0aG9y
U3R5bGVTaGVldHM6OlN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIEF1dGhvclN0eWxlU2hlZXRzOjph
bmFseXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFnIHVwZGF0ZUZsYWcsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNG
dWxsU3R5bGVSZWNhbGMpCitBdXRob3JTdHlsZVNoZWV0czo6U3R5bGVSZXNvbHZlclVwZGF0ZVR5
cGUgQXV0aG9yU3R5bGVTaGVldHM6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNG
dWxsU3R5bGVSZWNhbGMpCiB7CiAgICAgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSB0cnVlOwog
ICAgIAogICAgIHVuc2lnbmVkIG5ld1N0eWxlc2hlZXRDb3VudCA9IG5ld1N0eWxlc2hlZXRzLnNp
emUoKTsKIAotICAgIGlmICh1cGRhdGVGbGFnICE9IE9wdGltaXplZFVwZGF0ZSkKLSAgICAgICAg
cmV0dXJuIFJlY29uc3RydWN0OwogICAgIGlmICghbV9kb2N1bWVudC5zdHlsZVJlc29sdmVySWZF
eGlzdHMoKSkKICAgICAgICAgcmV0dXJuIFJlY29uc3RydWN0OwogCkBAIC0yODIsMTkgKzI4MCwz
MiBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsCiAgICAgfQogfQog
Ci1ib29sIEF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVG
bGFnIHVwZGF0ZUZsYWcpCit2b2lkIEF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVBY3RpdmVTdHls
ZVNoZWV0cyhVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiB7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdV
cGRhdGVUeXBlKTsKKwogICAgIGlmIChtX2RvY3VtZW50LmluU3R5bGVSZWNhbGMoKSB8fCBtX2Rv
Y3VtZW50LmluUmVuZGVyVHJlZVVwZGF0ZSgpKSB7CiAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5z
dCBkZWxldGluZyBzdHlsZSByZXNvbHZlciBpbiB0aGUgbWlkZGxlIG9mIGEgc3R5bGUgcmVzb2x1
dGlvbi4KLSAgICAgICAgLy8gQ3Jhc2ggc3RhY2tzIGluZGljYXRlIHdlIGNhbiBnZXQgaGVyZSB3
aGVuIHogcmVzb3VyY2UgbG9hZCBmYWlscyBzeW5jaHJvbm91c2x5IChmb3IgZXhhbXBsZSBkdWUg
dG8gY29udGVudCBibG9ja2luZykuCisgICAgICAgIC8vIENyYXNoIHN0YWNrcyBpbmRpY2F0ZSB3
ZSBjYW4gZ2V0IGhlcmUgd2hlbiBhIHJlc291cmNlIGxvYWQgZmFpbHMgc3luY2hyb25vdXNseSAo
Zm9yIGV4YW1wbGUgZHVlIHRvIGNvbnRlbnQgYmxvY2tpbmcpLgogICAgICAgICAvLyBGSVhNRTog
VGhlc2Uga2luZCBvZiBjYXNlcyBzaG91bGQgYmUgZWxpbWluYXRlZCBhbmQgdGhpcyBwYXRoIHJl
cGxhY2VkIGJ5IGFuIGFzc2VydC4KLSAgICAgICAgbV9wZW5kaW5nVXBkYXRlVHlwZSA9IEZ1bGxV
cGRhdGU7CisgICAgICAgIG1fcGVuZGluZ1VwZGF0ZVR5cGUgPSBVcGRhdGVUeXBlOjpDb250ZW50
c09ySW50ZXJwcmV0YXRpb247CiAgICAgICAgIG1fZG9jdW1lbnQuc2NoZWR1bGVGb3JjZWRTdHls
ZVJlY2FsYygpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKKyAgICBpZiAoIW1fZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgICAg
IG1fZG9jdW1lbnQuY2xlYXJTdHlsZVJlc29sdmVyKCk7CisgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKCFtX2RvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gRG9uJ3QgYm90aGVyIHVwZGF0aW5nLCBzaW5jZSB3ZSBoYXZl
bid0IGxvYWRlZCBhbGwgb3VyIHN0eWxlIGluZm8geWV0CisgICAgLy8gYW5kIGhhdmVuJ3QgY2Fs
Y3VsYXRlZCB0aGUgc3R5bGUgcmVzb2x2ZXIgZm9yIHRoZSBmaXJzdCB0aW1lLgorICAgIGlmICgh
bV9zaGFkb3dSb290ICYmICFtX2RpZFVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzICYmIG1fcGVuZGlu
Z1N0eWxlU2hlZXRDb3VudCkgeworICAgICAgICBtX2RvY3VtZW50LmNsZWFyU3R5bGVSZXNvbHZl
cigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9kaWRVcGRhdGVBY3RpdmVTdHls
ZVNoZWV0cyA9IHRydWU7CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiBhY3RpdmVT
dHlsZVNoZWV0czsKICAgICBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVl
dHMpOwpAQCAtMzA0LDggKzMxNSwxMCBAQCBib29sIEF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVB
Y3RpdmVTdHlsCiAgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9yKG1fZG9jdW1l
bnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5hdXRob3JTdHlsZVNoZWV0c0ZvclRlc3RpbmcoKSk7
CiAgICAgZmlsdGVyRW5hYmxlZE5vbmVtcHR5Q1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVT
aGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAotICAgIGJvb2wgcmVxdWlyZXNGdWxsU3R5bGVS
ZWNhbGM7Ci0gICAgYXV0byBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IGFuYWx5emVTdHlsZVNo
ZWV0Q2hhbmdlKHVwZGF0ZUZsYWcsIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCByZXF1aXJlc0Z1bGxT
dHlsZVJlY2FsYyk7CisgICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyA9IHRydWU7Cisg
ICAgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPSBSZWNv
bnN0cnVjdDsKKyAgICBpZiAodXBkYXRlVHlwZSA9PSBVcGRhdGVUeXBlOjpBY3RpdmVTZXQpCisg
ICAgICAgIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0gYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2Uo
YWN0aXZlQ1NTU3R5bGVTaGVldHMsIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKIAogICAgIHVw
ZGF0ZVN0eWxlUmVzb2x2ZXIoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIHN0eWxlUmVzb2x2ZXJVcGRh
dGVUeXBlKTsKIApAQCAtMzIxLDkgKzMzNCwxMyBAQCBib29sIEF1dGhvclN0eWxlU2hlZXRzOjp1
cGRhdGVBY3RpdmVTdHlsCiAgICAgICAgIGlmIChzaGVldC0+Y29udGVudHMoKS51c2VzU3R5bGVC
YXNlZEVkaXRhYmlsaXR5KCkpCiAgICAgICAgICAgICBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxp
dHkgPSB0cnVlOwogICAgIH0KLSAgICBtX3BlbmRpbmdVcGRhdGVUeXBlID0gTm9VcGRhdGU7CiAK
LSAgICByZXR1cm4gcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7CisgICAgaWYgKHJlcXVpcmVzRnVs
bFN0eWxlUmVjYWxjKSB7CisgICAgICAgIGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAgICAgICBt
X3NoYWRvd1Jvb3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9kb2N1bWVudC5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CisgICAgfQogfQog
CiB2b2lkIEF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVTdHlsZVJlc29sdmVyKFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4+JiBhY3RpdmVTdHlsZVNoZWV0cywgU3R5bGVSZXNvbHZlclVwZGF0
ZVR5cGUgdXBkYXRlVHlwZSkKQEAgLTM4Niw2NCArNDAzLDQ4IEBAIGJvb2wgQXV0aG9yU3R5bGVT
aGVldHM6OmFjdGl2ZVN0eWxlU2hlZXQKICAgICByZXR1cm4gbV93ZWFrQ29weU9mQWN0aXZlU3R5
bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5jb250YWlucyhzaGVldCk7CiB9CiAKLXZvaWQgQXV0
aG9yU3R5bGVTaGVldHM6OmZsdXNoUGVuZGluZ1VwZGF0ZXMoKQordm9pZCBBdXRob3JTdHlsZVNo
ZWV0czo6Zmx1c2hQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBpZiAobV9wZW5kaW5nVXBkYXRlVHlw
ZSA9PSBOb1VwZGF0ZSkKKyAgICBpZiAoIW1fcGVuZGluZ1VwZGF0ZVR5cGUpCiAgICAgICAgIHJl
dHVybjsKLSAgICB1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhtX3BlbmRpbmdVcGRhdGVUeXBlKTsK
KyAgICBhdXRvIHVwZGF0ZVR5cGUgPSAqbV9wZW5kaW5nVXBkYXRlVHlwZTsKKworICAgIGNsZWFy
UGVuZGluZ1VwZGF0ZSgpOworCisgICAgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHModXBkYXRlVHlw
ZSk7CiB9CiAKLXZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OnNjaGVkdWxlT3B0aW1pemVkVXBkYXRl
KCkKK3ZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAg
aWYgKG1fb3B0aW1pemVkVXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChtX3BlbmRpbmdVcGRhdGVUeXBlID09IE5vVXBkYXRlKQotICAgICAgICBtX3BlbmRp
bmdVcGRhdGVUeXBlID0gT3B0aW1pemVkVXBkYXRlOwotICAgIG1fb3B0aW1pemVkVXBkYXRlVGlt
ZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fcGVuZGluZ1VwZGF0ZVRpbWVyLnN0b3AoKTsKKyAg
ICBtX3BlbmRpbmdVcGRhdGVUeXBlID0geyB9OwogfQogCi12b2lkIEF1dGhvclN0eWxlU2hlZXRz
OjpkaWRDaGFuZ2UoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKK3ZvaWQgQXV0
aG9yU3R5bGVTaGVldHM6OnNjaGVkdWxlQWN0aXZlU2V0VXBkYXRlKCkKIHsKLSAgICBtX29wdGlt
aXplZFVwZGF0ZVRpbWVyLnN0b3AoKTsKLQotICAgIC8vIERvbid0IGJvdGhlciB1cGRhdGluZywg
c2luY2Ugd2UgaGF2ZW4ndCBsb2FkZWQgYWxsIG91ciBzdHlsZSBpbmZvIHlldAotICAgIC8vIGFu
ZCBoYXZlbid0IGNhbGN1bGF0ZWQgdGhlIHN0eWxlIHJlc29sdmVyIGZvciB0aGUgZmlyc3QgdGlt
ZS4KLSAgICBpZiAoIW1fZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpIHx8ICghbV9zaGFk
b3dSb290ICYmICFtX2RpZENhbGN1bGF0ZVN0eWxlUmVzb2x2ZXIgJiYgbV9wZW5kaW5nU3R5bGVT
aGVldENvdW50KSkgewotICAgICAgICBtX2RvY3VtZW50LmNsZWFyU3R5bGVSZXNvbHZlcigpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGlkQ2FsY3VsYXRlU3R5bGVSZXNvbHZlciA9
IHRydWU7Ci0KLSAgICBhdXRvIHN0eWxlU2hlZXRVcGRhdGUgPSAodXBkYXRlRmxhZyA9PSBSZWNh
bGNTdHlsZUlmTmVlZGVkIHx8IHVwZGF0ZUZsYWcgPT0gRGVmZXJSZWNhbGNTdHlsZUlmTmVlZGVk
KQotICAgICAgICA/IEF1dGhvclN0eWxlU2hlZXRzOjpPcHRpbWl6ZWRVcGRhdGUKLSAgICAgICAg
OiBBdXRob3JTdHlsZVNoZWV0czo6RnVsbFVwZGF0ZTsKLSAgICBib29sIHN0eWxlc2hlZXRDaGFu
Z2VSZXF1aXJlc1N0eWxlUmVjYWxjID0gdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoc3R5bGVTaGVl
dFVwZGF0ZSk7Ci0KLSAgICBhdXRvIHNjaGVkdWxlU3R5bGVSZWNhbGMgPSBbJl0gewotICAgICAg
ICBpZiAobV9zaGFkb3dSb290KQotICAgICAgICAgICAgbV9zaGFkb3dSb290LT5zZXROZWVkc1N0
eWxlUmVjYWxjKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZG9jdW1lbnQuc2NoZWR1
bGVGb3JjZWRTdHlsZVJlY2FsYygpOwotICAgIH07Ci0KLSAgICBpZiAodXBkYXRlRmxhZyA9PSBE
ZWZlclJlY2FsY1N0eWxlKSB7Ci0gICAgICAgIHNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKKyAgICBp
ZiAobV9wZW5kaW5nVXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoIW1fcGVuZGluZ1VwZGF0ZVR5cGUpCisgICAgICAgIG1fcGVuZGluZ1VwZGF0
ZVR5cGUgPSBVcGRhdGVUeXBlOjpBY3RpdmVTZXQ7CisgICAgbV9wZW5kaW5nVXBkYXRlVGltZXIu
c3RhcnRPbmVTaG90KDApOworfQogCi0gICAgaWYgKHVwZGF0ZUZsYWcgPT0gRGVmZXJSZWNhbGNT
dHlsZUlmTmVlZGVkKSB7Ci0gICAgICAgIGlmIChzdHlsZXNoZWV0Q2hhbmdlUmVxdWlyZXNTdHls
ZVJlY2FsYykKLSAgICAgICAgICAgIHNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KK3ZvaWQgQXV0aG9yU3R5bGVTaGVldHM6OmRpZENoYW5nZUNhbmRpZGF0ZXNG
b3JBY3RpdmVTZXQoKQoreworICAgIGF1dG8gdXBkYXRlVHlwZSA9IG1fcGVuZGluZ1VwZGF0ZVR5
cGUudmFsdWVPcihVcGRhdGVUeXBlOjpBY3RpdmVTZXQpOworICAgIGNsZWFyUGVuZGluZ1VwZGF0
ZSgpOworICAgIHVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKHVwZGF0ZVR5cGUpOworfQogCi0gICAg
aWYgKHN0eWxlc2hlZXRDaGFuZ2VSZXF1aXJlc1N0eWxlUmVjYWxjKQotICAgICAgICBtX2RvY3Vt
ZW50LnJlY2FsY1N0eWxlKFN0eWxlOjpGb3JjZSk7Cit2b2lkIEF1dGhvclN0eWxlU2hlZXRzOjpk
aWRDaGFuZ2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKQoreworICAgIGNsZWFyUGVuZGluZ1Vw
ZGF0ZSgpOworICAgIHVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZVR5cGU6OkNvbnRlbnRz
T3JJbnRlcnByZXRhdGlvbik7CiB9CiAKLXZvaWQgQXV0aG9yU3R5bGVTaGVldHM6Om9wdGltaXpl
ZFVwZGF0ZVRpbWVyRmlyZWQoKQordm9pZCBBdXRob3JTdHlsZVNoZWV0czo6cGVuZGluZ1VwZGF0
ZVRpbWVyRmlyZWQoKQogewotICAgIGRpZENoYW5nZShSZWNhbGNTdHlsZUlmTmVlZGVkKTsKKyAg
ICBmbHVzaFBlbmRpbmdVcGRhdGUoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0F1dGhvclN0eWxlU2hlZXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F1
dGhvclN0eWxlU2hlZXRzLmgJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9BdXRob3JTdHlsZVNoZWV0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMyArNDgsNiBAQCBj
bGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBUcmVlU2NvcGU7
CiAKLWVudW0gU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcgewotICAgIFJlY2FsY1N0eWxlSW1tZWRp
YXRlbHksCi0gICAgRGVmZXJSZWNhbGNTdHlsZSwKLSAgICBSZWNhbGNTdHlsZUlmTmVlZGVkLAot
ICAgIERlZmVyUmVjYWxjU3R5bGVJZk5lZWRlZAotfTsKLQogY2xhc3MgQXV0aG9yU3R5bGVTaGVl
dHMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjksOCArNjIs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlJiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZvaWQgcmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0
ZU5vZGUoTm9kZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDaGFuZ2UoU3R5bGVS
ZXNvbHZlclVwZGF0ZUZsYWcpOwotCiAgICAgU3RyaW5nIHByZWZlcnJlZFN0eWxlc2hlZXRTZXRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsgfQogICAg
IFN0cmluZyBzZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3RlZFN0eWxlc2hlZXRTZXROYW1lOyB9CiAgICAgdm9pZCBzZXRQcmVmZXJyZWRTdHlsZXNoZWV0
U2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFt
ZSA9IG5hbWU7IH0KQEAgLTkxLDEzICs4MiwxNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGFjdGl2
ZVN0eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCopIGNvbnN0OwogCi0gICAg
dm9pZCBzY2hlZHVsZU9wdGltaXplZFVwZGF0ZSgpOwotICAgIGJvb2wgaGFzUGVuZGluZ1VwZGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW1pemVkVXBkYXRlVGltZXIuaXNBY3RpdmUoKTsgfQot
ICAgIHZvaWQgZmx1c2hQZW5kaW5nVXBkYXRlcygpOworICAgIHZvaWQgZGlkQ2hhbmdlQ2FuZGlk
YXRlc0ZvckFjdGl2ZVNldCgpOworICAgIHZvaWQgc2NoZWR1bGVBY3RpdmVTZXRVcGRhdGUoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlv
bigpOworCisgICAgYm9vbCBoYXNQZW5kaW5nVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gISFtX3Bl
bmRpbmdVcGRhdGVUeXBlOyB9CisgICAgdm9pZCBmbHVzaFBlbmRpbmdVcGRhdGUoKTsKIAogcHJp
dmF0ZToKLSAgICBlbnVtIFVwZGF0ZUZsYWcgeyBOb1VwZGF0ZSA9IDAsIE9wdGltaXplZFVwZGF0
ZSwgRnVsbFVwZGF0ZSB9OwotICAgIGJvb2wgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRl
RmxhZyk7CisgICAgZW51bSBjbGFzcyBVcGRhdGVUeXBlIHsgQWN0aXZlU2V0LCBDb250ZW50c09y
SW50ZXJwcmV0YXRpb24gfTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0
ZVR5cGUpOwogCiAgICAgdm9pZCBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0
cjxTdHlsZVNoZWV0Pj4mKTsKIApAQCAtMTA2LDEwICsxMDAsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgUmVzZXQsCiAgICAgICAgIEFkZGl0aXZlCiAgICAgfTsKLSAgICBTdHlsZVJlc29sdmVyVXBk
YXRlVHlwZSBhbmFseXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVs
bFN0eWxlUmVjYWxjKTsKKyAgICBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBhbmFseXplU3R5bGVT
aGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgbmV3U3R5bGVz
aGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKICAgICB2b2lkIHVwZGF0ZVN0
eWxlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBTdHlsZVJlc29sdmVy
VXBkYXRlVHlwZSk7CiAKLSAgICB2b2lkIG9wdGltaXplZFVwZGF0ZVRpbWVyRmlyZWQoKTsKKyAg
ICB2b2lkIHBlbmRpbmdVcGRhdGVUaW1lckZpcmVkKCk7CisgICAgdm9pZCBjbGVhclBlbmRpbmdV
cGRhdGUoKTsKIAogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIFNoYWRvd1Jvb3QqIG1f
c2hhZG93Um9vdCB7IG51bGxwdHIgfTsKQEAgLTExNyw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+IG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlz
dDsKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBtX2FjdGl2ZVN0eWxlU2hlZXRz
OwogCi0gICAgVGltZXIgbV9vcHRpbWl6ZWRVcGRhdGVUaW1lcjsKKyAgICBUaW1lciBtX3BlbmRp
bmdVcGRhdGVUaW1lcjsKIAogICAgIC8vIFRoaXMgaXMgYSBtaXJyb3Igb2YgbV9hY3RpdmVBdXRo
b3JTdHlsZVNoZWV0cyB0aGF0IGdldHMgcG9wdWxhdGVkIG9uIGRlbWFuZCBmb3IgYWN0aXZlU3R5
bGVTaGVldHNDb250YWlucygpLgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8
Y29uc3QgQ1NTU3R5bGVTaGVldCo+PiBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZv
ckZhc3RMb29rdXA7CkBAIC0xMjcsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZSB1c2Ug
dGhpcyBjb3VudCBvZiBwZW5kaW5nIHNoZWV0cyB0byBkZXRlY3Qgd2hlbiB3ZSBjYW4gYmVnaW4g
YXR0YWNoaW5nCiAgICAgLy8gZWxlbWVudHMgYW5kIHdoZW4gaXQgaXMgc2FmZSB0byBleGVjdXRl
IHNjcmlwdHMuCiAgICAgaW50IG1fcGVuZGluZ1N0eWxlU2hlZXRDb3VudCB7IDAgfTsKLSAgICBi
b29sIG1fZGlkQ2FsY3VsYXRlU3R5bGVSZXNvbHZlciB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rp
ZFVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzIHsgZmFsc2UgfTsKIAotICAgIFVwZGF0ZUZsYWcgbV9w
ZW5kaW5nVXBkYXRlVHlwZSB7IE5vVXBkYXRlIH07CisgICAgT3B0aW9uYWw8VXBkYXRlVHlwZT4g
bV9wZW5kaW5nVXBkYXRlVHlwZTsKIAogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX3N0eWxlU2hl
ZXRDYW5kaWRhdGVOb2RlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50TGFuZ3Vh
Z2UoY29uc3QgCiAgICAgbV9jb250ZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTsKIAogICAgIC8vIFJl
Y2FsY3VsYXRlIHN0eWxlIHNvIGxhbmd1YWdlIGlzIHVzZWQgd2hlbiBzZWxlY3RpbmcgdGhlIGlu
aXRpYWwgZm9udC4KLSAgICBtX2F1dGhvclN0eWxlU2hlZXRzLT5kaWRDaGFuZ2UoRGVmZXJSZWNh
bGNTdHlsZSk7CisgICAgbV9hdXRob3JTdHlsZVNoZWV0cy0+ZGlkQ2hhbmdlQ29udGVudHNPcklu
dGVycHJldGF0aW9uKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldFhNTFZlcnNpb24oY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTE4NTksNyArMTg1OSw3IEBA
IHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UKICAgICAvLyByZS1hdHRh
Y2hpbmcgb3VyIGNvbnRhaW5pbmcgaWZyYW1lLCB3aGljaCB3aGVuIGFza2VkIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjppc1VSTEFsbG93ZWQKICAgICAvLyBoaXRzIGEgbnVsbC1kZXJlZmVyZW5jZSBk
dWUgdG8gc2VjdXJpdHkgY29kZSBhbHdheXMgYXNzdW1pbmcgdGhlIGRvY3VtZW50IGhhcyBhIFNl
Y3VyaXR5T3JpZ2luLgogCi0gICAgYXV0aG9yU3R5bGVTaGVldHMoKS5mbHVzaFBlbmRpbmdVcGRh
dGVzKCk7CisgICAgYXV0aG9yU3R5bGVTaGVldHMoKS5mbHVzaFBlbmRpbmdVcGRhdGUoKTsKIAog
ICAgIGZyYW1lVmlldy53aWxsUmVjYWxjU3R5bGUoKTsKIApAQCAtMTk1OSwxMyArMTk1OSwxMiBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKICAgICBpZiAoIXZpZXcoKSB8
fCB2aWV3KCktPmlzSW5SZW5kZXJUcmVlTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRob3JTdHlsZVNoZWV0cygpLmhhc1BlbmRpbmdVcGRhdGUoKSkKLSAgICAgICAgYXV0
aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJZk5lZWRlZCk7CisgICAgYXV0
aG9yU3R5bGVTaGVldHMoKS5mbHVzaFBlbmRpbmdVcGRhdGUoKTsKIAogICAgIGlmICghbmVlZHNT
dHlsZVJlY2FsYygpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWNhbGNTdHlsZShTdHlsZTo6
Tm9DaGFuZ2UpOworICAgIHJlY2FsY1N0eWxlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZUxheW91dCgpCkBAIC0yMDE0LDcgKzIwMTMsOCBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nCiAgICAgICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHlP
ckZyYW1lc2V0KCk7CiAgICAgICAgIGlmIChib2R5RWxlbWVudCAmJiAhYm9keUVsZW1lbnQtPnJl
bmRlcmVyKCkgJiYgbV9wZW5kaW5nU2hlZXRMYXlvdXQgPT0gTm9MYXlvdXRXaXRoUGVuZGluZ1No
ZWV0cykgewogICAgICAgICAgICAgbV9wZW5kaW5nU2hlZXRMYXlvdXQgPSBEaWRMYXlvdXRXaXRo
UGVuZGluZ1NoZWV0czsKLSAgICAgICAgICAgIGF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdl
KFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICAgICAgYXV0aG9yU3R5bGVTaGVldHMo
KS5kaWRDaGFuZ2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsKKyAgICAgICAgICAgIHJlY2Fs
Y1N0eWxlKFN0eWxlOjpGb3JjZSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9oYXNOb2Rlc1dpdGhQ
bGFjZWhvbGRlclN0eWxlKQogICAgICAgICAgICAgLy8gSWYgbmV3IG5vZGVzIGhhdmUgYmVlbiBh
ZGRlZCBvciBzdHlsZSByZWNhbGMgaGFzIGJlZW4gZG9uZSB3aXRoIHN0eWxlIHNoZWV0cyBzdGls
bCBwZW5kaW5nLCBzb21lIG5vZGVzIAogICAgICAgICAgICAgLy8gbWF5IG5vdCBoYXZlIGhhZCB0
aGVpciByZWFsIHN0eWxlIGNhbGN1bGF0ZWQgeWV0LiBOb3JtYWxseSB0aGlzIGdldHMgY2xlYW5l
ZCB3aGVuIHN0eWxlIHNoZWV0cyBhcnJpdmUgCkBAIC0zMTUxLDcgKzMxNTEsNyBAQCB2b2lkIERv
Y3VtZW50OjpkaWRSZW1vdmVBbGxQZW5kaW5nU3R5bGVzCiB7CiAgICAgbV9uZWVkc05vdGlmeVJl
bW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0ID0gZmFsc2U7CiAKLSAgICBhdXRob3JTdHlsZVNoZWV0
cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlSWZOZWVkZWQpOworICAgIGF1dGhvclN0eWxl
U2hlZXRzKCkuZGlkQ2hhbmdlQ2FuZGlkYXRlc0ZvckFjdGl2ZVNldCgpOwogCiAgICAgaWYgKG1f
cGVuZGluZ1NoZWV0TGF5b3V0ID09IERpZExheW91dFdpdGhQZW5kaW5nU2hlZXRzKSB7CiAgICAg
ICAgIG1fcGVuZGluZ1NoZWV0TGF5b3V0ID0gSWdub3JlTGF5b3V0V2l0aFBlbmRpbmdTaGVldHM7
CkBAIC0zMTgyLDcgKzMxODIsNyBAQCBib29sIERvY3VtZW50Ojp1c2VzU3R5bGVCYXNlZEVkaXRh
YmlsaXR5CiAgICAgQVNTRVJUKCFtX2luU3R5bGVSZWNhbGMpOwogCiAgICAgYXV0byYgYXV0aG9y
U2hlZXRzID0gY29uc3RfY2FzdDxBdXRob3JTdHlsZVNoZWV0cyY+KGF1dGhvclN0eWxlU2hlZXRz
KCkpOwotICAgIGF1dGhvclNoZWV0cy5mbHVzaFBlbmRpbmdVcGRhdGVzKCk7CisgICAgYXV0aG9y
U2hlZXRzLmZsdXNoUGVuZGluZ1VwZGF0ZSgpOwogICAgIHJldHVybiBhdXRob3JTaGVldHMudXNl
c1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpOwogfQogCkBAIC0zMjI2LDcgKzMyMjYsNyBAQCB2b2lk
IERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0CiAgICAgICAgIC8vIC1kd2gKICAg
ICAgICAgYXV0aG9yU3R5bGVTaGVldHMoKS5zZXRTZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1lKGNv
bnRlbnQpOwogICAgICAgICBhdXRob3JTdHlsZVNoZWV0cygpLnNldFByZWZlcnJlZFN0eWxlc2hl
ZXRTZXROYW1lKGNvbnRlbnQpOwotICAgICAgICBhdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5n
ZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFu
Z2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEhUVFBIZWFkZXJOYW1lOjpSZWZyZXNoOiB7CkBAIC0zNTMwLDcgKzM1MzAsNyBAQCBTdHJpbmcg
RG9jdW1lbnQ6OnNlbGVjdGVkU3R5bGVzaGVldFNldCgpCiB2b2lkIERvY3VtZW50OjpzZXRTZWxl
Y3RlZFN0eWxlc2hlZXRTZXQoY29uc3QgU3RyaW5nJiBhU3RyaW5nKQogewogICAgIGF1dGhvclN0
eWxlU2hlZXRzKCkuc2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZShhU3RyaW5nKTsKLSAgICBh
dXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICBhdXRo
b3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbigpOwogfQog
CiB2b2lkIERvY3VtZW50OjpldmFsdWF0ZU1lZGlhUXVlcnlMaXN0KCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAkocmV2aXNpb24gMjA2MzUxKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjpjbGVhclBh
Z2VVc2VyCiB7CiAgICAgaWYgKG1fcGFnZVVzZXJTaGVldCkgewogICAgICAgICBtX3BhZ2VVc2Vy
U2hlZXQgPSBudWxscHRyOwotICAgICAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCku
ZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBtX2RvY3VtZW50LmF1dGhvclN0
eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CiAgICAgfQog
fQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZVBh
Z2VVc2UKIHsKICAgICBjbGVhclBhZ2VVc2VyU2hlZXQoKTsKICAgICBpZiAocGFnZVVzZXJTaGVl
dCgpKQotICAgICAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJl
Y2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hl
ZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CiB9CiAKIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBFeHRlbnNpb25TdHlsZVNoZWV0czo6aW5qZWN0
ZWRVc2VyU3R5bGVTaGVldHMoKSBjb25zdApAQCAtMTU1LDIxICsxNTUsMjEgQEAgdm9pZCBFeHRl
bnNpb25TdHlsZVNoZWV0czo6aW52YWxpZGF0ZUluagogICAgIG1faW5qZWN0ZWRTdHlsZVNoZWV0
Q2FjaGVWYWxpZCA9IGZhbHNlOwogICAgIGlmIChtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzLmlz
RW1wdHkoKSAmJiBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShE
ZWZlclJlY2FsY1N0eWxlKTsKKyAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlk
Q2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CiB9CiAKIHZvaWQgRXh0ZW5zaW9uU3R5
bGVTaGVldHM6OmFkZFVzZXJTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgdXNl
clNoZWV0KQogewogICAgIEFTU0VSVCh1c2VyU2hlZXQuZ2V0KCkuaXNVc2VyU3R5bGVTaGVldCgp
KTsKICAgICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBlbmQoQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdU
Rk1vdmUodXNlclNoZWV0KSwgbV9kb2N1bWVudCkpOwotICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5
bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgbV9kb2N1
bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlv
bigpOwogfQogCiB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjphZGRBdXRob3JTdHlsZVNoZWV0
Rm9yVGVzdGluZyhSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGF1dGhvclNoZWV0KQogewogICAg
IEFTU0VSVCghYXV0aG9yU2hlZXQuZ2V0KCkuaXNVc2VyU3R5bGVTaGVldCgpKTsKICAgICBtX2F1
dGhvclN0eWxlU2hlZXRzRm9yVGVzdGluZy5hcHBlbmQoQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdU
Rk1vdmUoYXV0aG9yU2hlZXQpLCBtX2RvY3VtZW50KSk7Ci0gICAgbV9kb2N1bWVudC5hdXRob3JT
dHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICBtX2Rv
Y3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0
aW9uKCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6Om1heWJlQWRkQ29udGUKIAogdm9pZCBF
eHRlbnNpb25TdHlsZVNoZWV0czo6c3R5bGVSZXNvbHZlckNoYW5nZWRUaW1lckZpcmVkKCkKIHsK
LSAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOworICAgIG1fZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFu
Z2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsKIH0KIAogdm9pZCBFeHRlbnNpb25TdHlsZVNo
ZWV0czo6ZGV0YWNoRnJvbURvY3VtZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9J
bmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6cmVtb3ZlZEZyb21ECiAKICAg
ICAvLyBJZiB3ZSdyZSBpbiBkb2N1bWVudCB0ZWFyZG93biwgdGhlbiB3ZSBkb24ndCBuZWVkIHRv
IGRvIGFueSBub3RpZmljYXRpb24gb2Ygb3VyIHNoZWV0J3MgcmVtb3ZhbC4KICAgICBpZiAoZG9j
dW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICBkb2N1bWVudC5hdXRob3JTdHls
ZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgZG9jdW1lbnQu
YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsK
IH0KIAogdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyRG9jdW1lbnREYXRhKERvY3Vt
ZW50JiwgRWxlbWVudCYgZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbSgKIAogICAg
IC8vIElmIHdlJ3JlIGluIGRvY3VtZW50IHRlYXJkb3duLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8g
ZG8gYW55IG5vdGlmaWNhdGlvbiBvZiBvdXIgc2hlZXQncyByZW1vdmFsLgogICAgIGlmIChkb2N1
bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JT
dHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgZG9jdW1l
bnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlv
bigpOwogfQogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6ZmluaXNoUGFyc2luZ0NoaWxk
cmVuKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHJldmlzaW9uIDIwNjM1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgU2hhZG93Um9vdDo6dXBkYXRlU3R5bGUoKQogICAgIGlmICgh
bV9hdXRob3JTdHlsZVNoZWV0cykKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBNYWtl
IG9wdGltaXplZCB1cGRhdGVkIHdvcmsuCi0gICAgbV9hdXRob3JTdHlsZVNoZWV0cy0+ZGlkQ2hh
bmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgIG1fYXV0aG9yU3R5bGVTaGVldHMtPmRpZENoYW5n
ZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbigpOwogfQogCiBTdHJpbmcgU2hhZG93Um9vdDo6aW5u
ZXJIVE1MKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50OjpzZXREaXNhYmxlZFN0YXRlKGIKICAgICAgICAgaWYgKCFtX3NoZWV0ICYmIG1fZGlz
YWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0KQogICAgICAgICAgICAgcHJvY2VzcygpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCku
ZGlkQ2hhbmdlKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5hdXRo
b3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbigpOwogICAg
IH0KIH0KIApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb24KICAgICAgICAgbV9tZWRpYSA9IHZhbHVlLnN0cmluZygpLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCk7CiAgICAgICAgIHByb2Nlc3MoKTsKICAgICAgICAgaWYgKG1fc2hlZXQg
JiYgIWlzRGlzYWJsZWQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVl
dHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgICAgICBkb2N1bWVudCgp
LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKSB7
CkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogICAg
IH0gZWxzZSBpZiAobV9zaGVldCkgewogICAgICAgICAvLyB3ZSBubyBsb25nZXIgY29udGFpbiBh
IHN0eWxlc2hlZXQsIGUuZy4gcGVyaGFwcyByZWwgb3IgdHlwZSB3YXMgY2hhbmdlZAogICAgICAg
ICBjbGVhclNoZWV0KCk7Ci0gICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5k
aWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5
bGVTaGVldHMoKS5kaWRDaGFuZ2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsKICAgICB9CiB9
CiAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb20o
Q29udGFpCiAgICAgICAgIHJlbW92ZVBlbmRpbmdTaGVldChSZW1vdmVQZW5kaW5nU2hlZXROb3Rp
ZnlMYXRlcik7CiAKICAgICBpZiAoZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0g
ICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNh
bGNTdHlsZUlmTmVlZGVkKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygp
LmRpZENoYW5nZUNhbmRpZGF0ZXNGb3JBY3RpdmVTZXQoKTsKIH0KIAogdm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldAogCiAgICAgaWYgKHR5cGUgPT0gSW5h
Y3RpdmVTaGVldCkgewogICAgICAgICAvLyBEb2N1bWVudCBqdXN0IG5lZWRzIHRvIGtub3cgYWJv
dXQgdGhlIHNoZWV0IGZvciBleHBvc3VyZSB0aHJvdWdoIGRvY3VtZW50LnN0eWxlU2hlZXRzCi0g
ICAgICAgIGRvY3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNh
bGNTdHlsZUlmTmVlZGVkKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygp
LmRpZENoYW5nZUNhbmRpZGF0ZXNGb3JBY3RpdmVTZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY28KICAgICAgICAgaWYgKHNoZWV0KCkpIHsKICAgICAgICAgICAgIHNo
ZWV0KCktPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2Ny
aXB0aW9uU3ludGF4KHZhbHVlKSk7CiAgICAgICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRv
Y3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICAgICAgICAgIGRvY3VtZW50
KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5n
ZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlvbigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChu
YW1lID09IHR5cGVBdHRyKQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5zZXRDb250ZW50VHlw
ZSh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4OSw3ICs4ODksNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlCiAgICAgICAgIG1fbm9k
ZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5zZXQobm9kZUlkLCBmb3JjZWRQc2V1ZG9TdGF0ZSk7CiAg
ICAgZWxzZQogICAgICAgICBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUucmVtb3ZlKG5vZGVJ
ZCk7Ci0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5n
ZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLmF1dGhv
clN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1
bHQpCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldFBz
ZXVkb1N0YXRlCiAKICAgICBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUuY2xlYXIoKTsKICAg
ICBmb3IgKGF1dG8mIGRvY3VtZW50IDogZG9jdW1lbnRzVG9DaGFuZ2UpCi0gICAgICAgIGRvY3Vt
ZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5
KTsKKyAgICAgICAgZG9jdW1lbnQtPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVu
dHNPckludGVycHJldGF0aW9uKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCShy
ZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaQogICAgIG1fZW11bGF0ZWRNZWRpYSA9IG1l
ZGlhOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpOwogICAgIGlmIChkb2N1bWVudCkgewotICAgICAgICBkb2N1bWVudC0+YXV0aG9yU3R5bGVT
aGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGRvY3Vt
ZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJbnRlcnByZXRhdGlv
bigpOwogICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CiAgICAgfQogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBGcmFt
ZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgYwogICAgIG1fZG9jLT5zZXRQcmludGluZyhw
cmludGluZyk7CiAgICAgdmlldygpLT5hZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyhwcmludGlu
Zyk7CiAKLSAgICBtX2RvYy0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoUmVjYWxjU3R5
bGVJbW1lZGlhdGVseSk7CisgICAgbV9kb2MtPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdl
Q29udGVudHNPckludGVycHJldGF0aW9uKCk7CiAgICAgaWYgKHNob3VsZFVzZVByaW50aW5nTGF5
b3V0KCkpIHsKICAgICAgICAgdmlldygpLT5mb3JjZUxheW91dEZvclBhZ2luYXRpb24ocGFnZVNp
emUsIG9yaWdpbmFsUGFnZVNpemUsIG1heGltdW1TaHJpbmtSYXRpbywgc2hvdWxkQWRqdXN0Vmll
d1NpemUpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShy
ZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMDEsNyArMTMwMSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQo
Ym9vbCBhbGxvd1N1YnRyZWUKICAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9
IGRvY3VtZW50LnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpOwogICAgICAgICBpZiAoIXN0eWxlUmVz
b2x2ZXIgfHwgc3R5bGVSZXNvbHZlci0+aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0
Q2hhbmdlKCkpIHsKICAgICAgICAgICAgIExPRyhMYXlvdXQsICIgIGhhc01lZGlhUXVlcmllc0Fm
ZmVjdGVkQnlWaWV3cG9ydENoYW5nZSwgZW5xdWV1ZWluZyBzdHlsZSByZWNhbGMiKTsKLSAgICAg
ICAgICAgIGRvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlKERlZmVyUmVjYWxj
U3R5bGUpOworICAgICAgICAgICAgZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFu
Z2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGluc3RydW1lbnRhdGlvbiBldmVudCBpcyBub3Qgc3RyaWN0bHkgYWNjdXJhdGUgc2luY2UgY2Fj
aGVkIG1lZGlhIHF1ZXJ5IHJlc3VsdHMgZG8gbm90IHBlcnNpc3QgYWNyb3NzIFN0eWxlUmVzb2x2
ZXIgcmVidWlsZHMuCiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkKGRvY3VtZW50KTsKICAgICAgICAgfSBlbHNlCkBAIC0zNDk2LDcg
KzM0OTYsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0UGFnaW5hdGlvbihjb25zdCBQYWdpCiAKICAg
ICBtX3BhZ2luYXRpb24gPSBwYWdpbmF0aW9uOwogCi0gICAgZnJhbWUoKS5kb2N1bWVudCgpLT5h
dXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICBmcmFt
ZSgpLmRvY3VtZW50KCktPmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPcklu
dGVycHJldGF0aW9uKCk7CiB9CiAKIEludFJlY3QgRnJhbWVWaWV3Ojp3aW5kb3dDbGlwUmVjdCgp
IGNvbnN0CkBAIC00OTY1LDcgKzQ5NjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Vmlld3BvcnRT
aXplRm9yQ1NTVmllCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKSkgewogICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgdXBkYXRl
Vmlld3BvcnRVbml0c09uUmVzaXplKCksIGJ1dCBzeW5jaHJvbm91c2x5CiAgICAgICAgIC8vIGRp
cnR5aW5nIHN0eWxlIGhlcmUgY2F1c2VzIGFzc2VydGlvbnMgb24gaU9TIChyZGFyOi8vcHJvYmxl
bS8xOTk5ODE2NikuCi0gICAgICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENo
YW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgZG9jdW1lbnQtPmF1dGhvclN0eWxlU2hl
ZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CiAgICAgfQogfQogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNyArNDI0LDcgQEAgdm9p
ZCBQYWdlOjpzZXRWaWV3TW9kZShWaWV3TW9kZSB2aWV3TW9kZQogICAgICAgICBtX21haW5GcmFt
ZS0+dmlldygpLT5mb3JjZUxheW91dCgpOwogCiAgICAgaWYgKG1fbWFpbkZyYW1lLT5kb2N1bWVu
dCgpKQotICAgICAgICBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMo
KS5kaWRDaGFuZ2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIG1fbWFpbkZyYW1l
LT5kb2N1bWVudCgpLT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJbnRl
cnByZXRhdGlvbigpOwogfQogI2VuZGlmIC8vIEVOQUJMRShWSUVXX01PREVfQ1NTX01FRElBKQog
CkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBQYWdlOjpzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxG
cmFtZQogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVu
dCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5h
dXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJbnRl
cnByZXRhdGlvbigpOwogICAgIH0KIH0KIApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBQYWdl
OjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0QwogICAgICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGRvY3VtZW50LT5leHRlbnNpb25TdHlsZVNo
ZWV0cygpLmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOwotICAgICAgICBkb2N1
bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2UoRGVmZXJSZWNhbGNTdHlsZSk7Cisg
ICAgICAgIGRvY3VtZW50LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRzT3JJ
bnRlcnByZXRhdGlvbigpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwNjM1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3
LDcgQEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZQogICAgICAgICB9
CiAgICAgfQogCi0gICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShE
ZWZlclJlY2FsY1N0eWxlKTsKKyAgICBkb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCkuZGlk
Q2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgU1ZHRm9udEZhY2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSYgcm9vdFBhcmVudCkKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFNWR0ZvbnRGYWNl
RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29uCiAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLnVucmVnaXN0ZXJTVkdGb250RmFjZUVsZW1lbnQodGhpcyk7CiAgICAgICAgIG1f
Zm9udEZhY2VSdWxlLT5tdXRhYmxlUHJvcGVydGllcygpLmNsZWFyKCk7CiAKLSAgICAgICAgZG9j
dW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShEZWZlclJlY2FsY1N0eWxlKTsK
KyAgICAgICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZUNvbnRlbnRz
T3JJbnRlcnByZXRhdGlvbigpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlQoIW1fZm9udEVs
ZW1lbnQpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAkocmV2aXNp
b24gMjA2MzUxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgWE1MVHJlZVZpZXdlcjo6dHJhbnNmb3Jt
RG9jdW1lbnRUb1QKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0
aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBh
dXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CiAgICAgbV9k
b2N1bWVudC5nZXRFbGVtZW50QnlJZChTdHJpbmcoQVNDSUlMaXRlcmFsKCJ4bWwtdmlld2VyLXN0
eWxlIikpKS0+YXBwZW5kQ2hpbGQodGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgbV9kb2N1
bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5
KTsKKyAgICBtX2RvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNP
ckludGVycHJldGF0aW9uKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZp
c2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgWE1MRG9jdW1l
bnRQYXJzZXI6OmVuZCgpCiAgICAgICAgIGluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIHVwZGF0ZUxlYWZUZXh0Tm9kZSgpOwotICAgICAgICBkb2N1bWVudCgp
LT5hdXRob3JTdHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsK
KyAgICAgICAgZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2VDb250ZW50
c09ySW50ZXJwcmV0YXRpb24oKTsKICAgICB9CiAKICAgICBpZiAoaXNQYXJzaW5nKCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCShyZXZpc2lvbiAyMDYzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzODcs
NyArMTM4Nyw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICAgICAgZG9j
dW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291
cmNlPihkb2MpKTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8g
TWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBz
dHlsZXNoZWV0cy4KLSAgICAgICAgZG9jdW1lbnQoKS0+YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRD
aGFuZ2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGRvY3VtZW50KCktPmF1dGhv
clN0eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CiAKICAg
ICAgICAgLy8gc3R5bGVSZXNvbHZlckNoYW5nZWQoKSBjYWxsIGNhbiBkZXRhY2ggdGhlIHBhcnNl
ciBhbmQgbnVsbCBvdXQgaXRzIGRvY3VtZW50LgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdl
IGp1c3QgYmFpbCBvdXQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDYzNTIpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxNi0wOS0yNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQXV0aG9yU3R5bGVTaGVldHMgc2hvdWxkbid0IHRyaWdnZXIgc3luY2hyb25vdXMgc3R5
bGUgcmVzb2x1dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgcmVh
cHBseVN0eWxlc10pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRpbmc6bWluaW11
bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0aDpvcmlnaW5h
bFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdFZpZXdTaXplOnBhZ2luYXRlU2Ny
ZWVuQ29udGVudDpdKToKKwogMjAxNi0wOS0yNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSBzdHlsZXNoZWV0IGNoYW5nZSBsb2dpYyBmcm9tIERvY3Vt
ZW50IHRvIEF1dGhvclN0eWxlU2hlZXRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDIwNjM1MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2MTEsMTAgKzM2MTEsMTIg
QEAgLSAodm9pZClyZWFwcGx5U3R5bGVzCiAgICAgZG91YmxlIHN0YXJ0ID0gQ0ZBYnNvbHV0ZVRp
bWVHZXRDdXJyZW50KCk7CiAjZW5kaWYKIAotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5hdXRob3JT
dHlsZVNoZWV0cygpLmRpZENoYW5nZShSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKLSAgICAKLSNp
ZmRlZiBMT0dfVElNRVMgICAgICAgIAorICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShb
c2VsZiBfZnJhbWVdKSkgeworICAgICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmF1dGhvclN0
eWxlU2hlZXRzKCkuZGlkQ2hhbmdlQ29udGVudHNPckludGVycHJldGF0aW9uKCk7CisgICAgICAg
IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIH0KKwor
I2lmZGVmIExPR19USU1FUwogICAgIGRvdWJsZSB0aGlzVGltZSA9IENGQWJzb2x1dGVUaW1lR2V0
Q3VycmVudCgpIC0gc3RhcnQ7CiAgICAgTE9HKFRpbWluZywgIiVzIGFwcGx5IHN0eWxlIHNlY29u
ZHMgPSAlZiIsIFtzZWxmIFVSTF0sIHRoaXNUaW1lKTsKICNlbmRpZgpAQCAtNTAwNSw3ICs1MDA3
LDcgQEAgLSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wpcHJpbnRpbmcgbWluaQogCiAgICAgICAg
ICAgICBkb2N1bWVudC0+c2V0UGFnaW5hdGVkRm9yU2NyZWVuKF9wcml2YXRlLT5wYWdpbmF0ZVNj
cmVlbkNvbnRlbnQpOwogICAgICAgICAgICAgZG9jdW1lbnQtPnNldFByaW50aW5nKF9wcml2YXRl
LT5wcmludGluZyk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YXV0aG9yU3R5bGVTaGVldHMoKS5k
aWRDaGFuZ2UoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgICAgICBkb2N1bWVudC0+
YXV0aG9yU3R5bGVTaGVldHMoKS5kaWRDaGFuZ2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24oKTsK
ICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>