<?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>192676</bug_id>
          
          <creation_ts>2018-12-13 13:17:17 -0800</creation_ts>
          <short_desc>Navigations away from the SafeBrowsing interstitial show a flash of old content</short_desc>
          <delta_ts>2018-12-19 16:55:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ali Juma">ajuma</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ajuma</cc>
    
    <cc>cdumez</cc>
    
    <cc>eugenebut</cc>
    
    <cc>jberlin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487680</commentid>
    <comment_count>0</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-12-13 13:17:17 -0800</bug_when>
    <thetext>When the SafeBrowsing interstitial is displayed, any navigation away from it (e.g. by entering a new URL, or by clicking the link that takes you to the unsafe site) will briefly flash the content of the previous site (that site that was covered by the interstitial).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488439</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-17 08:06:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/46778072&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488932</commentid>
    <comment_count>2</comment_count>
      <attachid>357577</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-18 10:06:15 -0800</bug_when>
    <thetext>Created attachment 357577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488933</commentid>
    <comment_count>3</comment_count>
      <attachid>357577</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-18 10:06:37 -0800</bug_when>
    <thetext>Comment on attachment 357577
Patch

This doesn&apos;t work right for unsafe iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489521</commentid>
    <comment_count>4</comment_count>
      <attachid>357738</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-19 15:23:42 -0800</bug_when>
    <thetext>Created attachment 357738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489542</commentid>
    <comment_count>5</comment_count>
      <attachid>357742</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-19 15:49:51 -0800</bug_when>
    <thetext>Created attachment 357742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489586</commentid>
    <comment_count>6</comment_count>
      <attachid>357742</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 16:42:48 -0800</bug_when>
    <thetext>Comment on attachment 357742
Patch

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

r=me with suggestion.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4199
&gt; +        pageClient().clearSafeBrowsingWarningIfForMainFrameNavigation();

Cannot we call clearSafeBrowsingWarningIfForMainFrameNavigation() from inside PageClient::didFirstVisuallyNonEmptyLayoutForMainFrame()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489598</commentid>
    <comment_count>7</comment_count>
      <attachid>357742</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-19 16:52:48 -0800</bug_when>
    <thetext>Comment on attachment 357742
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4199
&gt;&gt; +        pageClient().clearSafeBrowsingWarningIfForMainFrameNavigation();
&gt; 
&gt; Cannot we call clearSafeBrowsingWarningIfForMainFrameNavigation() from inside PageClient::didFirstVisuallyNonEmptyLayoutForMainFrame()?

That&apos;s too late.  Sometimes in MiniBrowser that leaves the window blank</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489602</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-19 16:55:24 -0800</bug_when>
    <thetext>http://trac.webkit.org/r239408</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357577</attachid>
            <date>2018-12-18 10:06:15 -0800</date>
            <delta_ts>2018-12-19 15:23:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192676-20181218100614.patch</filename>
            <type>text/plain</type>
            <size>4279</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzkzMzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEyLTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmF2aWdhdGlvbnMg
YXdheSBmcm9tIHRoZSBTYWZlQnJvd3NpbmcgaW50ZXJzdGl0aWFsIHNob3cgYSBmbGFzaCBvZiBv
bGQgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNjc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhIHVzZXIgY2xpY2tzIHRvIGNvbnRpbnVlIHRocm91Z2ggYSBzYWZlIGJyb3dzaW5n
IHdhcm5pbmcsIGRvIG5vdCByZW1vdmUgdGhlIHdhcm5pbmcgdW50aWwgdGhlIG5ldyBwYWdlIGhh
cyByZW5kZXJlZCBzb21ldGhpbmcgbWVhbmluZ2Z1bC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nob3dTYWZlQnJv
d3NpbmdXYXJuaW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNob3dT
YWZlQnJvd3NpbmdXYXJuaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWFjaExheW91dE1pbGVzdG9u
ZSk6CisKIDIwMTgtMTItMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWdyZXNzaW9uKHIyMzkxODIpIFN1c3BlbmRlZFBhZ2UncyBwcm9jZXNzIHJldXNlIGZv
ciBsaW5rIG5hdmlnYXRpb24gb3B0aW1pemF0aW9uIHNvbWV0aW1lcyBicm9rZW4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM5MjIyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE5MSw2ICs0MTkxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlYWNoTGF5b3V0
TWlsZXN0bwogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKKyAgICBpZiAobGF5b3V0TWlsZXN0b25lcy5jb250YWlucyhEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQpKQorICAgICAgICBwYWdlQ2xpZW50KCkuY2xlYXJTYWZlQnJvd3NpbmdX
YXJuaW5nKCk7CisgICAgCiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRl
ckNsaWVudC0+ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoKnRoaXMsIGxheW91dE1pbGVzdG9uZXMp
OwogICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoKnRo
aXMsIGxheW91dE1pbGVzdG9uZXMpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzkyMjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
Mjc5LDkgKzEyNzksMTQgQEAgLSAodm9pZClfZGlkQ2hhbmdlRWRpdG9yU3RhdGUKIC0gKHZvaWQp
X3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nOihjb25zdCBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5p
bmcmKXdhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFy
aWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiljb21wbGV0aW9uSGFu
ZGxlcgogewogICAgIF9zYWZlQnJvd3NpbmdXYXJuaW5nID0gYWRvcHROUyhbW1dLU2FmZUJyb3dz
aW5nV2FybmluZyBhbGxvY10gaW5pdFdpdGhGcmFtZTpzZWxmLmJvdW5kcyBzYWZlQnJvd3NpbmdX
YXJuaW5nOndhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtTZWxmID0gV2Vha09iakNQdHI8
V0tXZWJWaWV3PihzZWxmKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byBzdHJv
bmdTZWxmID0gd2Vha1NlbGYuZ2V0KCkpCi0gICAgICAgICAgICBbc3RkOjpleGNoYW5nZShzdHJv
bmdTZWxmLT5fc2FmZUJyb3dzaW5nV2FybmluZywgbnVsbHB0cikgcmVtb3ZlRnJvbVN1cGVydmll
d107CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAg
IGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1Nl
bGYpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8qIGNvbnRpbnVlVW5zYWZlTG9h
ZCA9IFdURjo6Z2V0X2lmPFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkPihyZXN1bHQpOworICAg
ICAgICBpZiAoY29udGludWVVbnNhZmVMb2FkICYmICpjb250aW51ZVVuc2FmZUxvYWQgPT0gV2Vi
S2l0OjpDb250aW51ZVVuc2FmZUxvYWQ6OlllcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgW3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3NhZmVCcm93c2luZ1dhcm5pbmcsIG51bGxw
dHIpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIH1dKTsKICAgICBbc2VsZiBhZGRTdWJ2aWV3
Ol9zYWZlQnJvd3NpbmdXYXJuaW5nLmdldCgpXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzkyMjIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTYyMiw5ICsxNjIyLDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNob3dTYWZlQnJvd3NpbmdX
YXJuaW4KICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKENvbnRpbnVlVW5zYWZlTG9h
ZDo6WWVzKTsKIAogICAgIG1fc2FmZUJyb3dzaW5nV2FybmluZyA9IGFkb3B0TlMoW1tXS1NhZmVC
cm93c2luZ1dhcm5pbmcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W21fdmlldyBib3VuZHNdIHNhZmVC
cm93c2luZ1dhcm5pbmc6d2FybmluZyBjb21wbGV0aW9uSGFuZGxlcjpbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQot
ICAgICAgICAgICAgW3N0ZDo6ZXhjaGFuZ2Uod2Vha1RoaXMtPm1fc2FmZUJyb3dzaW5nV2Fybmlu
ZywgbnVsbHB0cikgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGF1dG8qIGNvbnRpbnVlVW5zYWZlTG9hZCA9IFdURjo6Z2V0X2lm
PENvbnRpbnVlVW5zYWZlTG9hZD4ocmVzdWx0KTsKKyAgICAgICAgaWYgKGNvbnRpbnVlVW5zYWZl
TG9hZCAmJiAqY29udGludWVVbnNhZmVMb2FkID09IENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBbc3RkOjpleGNoYW5nZSh3ZWFrVGhpcy0+bV9z
YWZlQnJvd3NpbmdXYXJuaW5nLCBudWxscHRyKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICB9
XSk7CiAgICAgW21fdmlldyBhZGRTdWJ2aWV3Om1fc2FmZUJyb3dzaW5nV2FybmluZy5nZXQoKV07
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357738</attachid>
            <date>2018-12-19 15:23:42 -0800</date>
            <delta_ts>2018-12-19 15:49:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192676-20181219152341.patch</filename>
            <type>text/plain</type>
            <size>22388</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzkzNjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTEyLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmF2aWdhdGlvbnMg
YXdheSBmcm9tIHRoZSBTYWZlQnJvd3NpbmcgaW50ZXJzdGl0aWFsIHNob3cgYSBmbGFzaCBvZiBv
bGQgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNjc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhIHVzZXIgY2xpY2tzIHRocm91Z2ggYSBzYWZlIGJyb3dzaW5nIHdhcm5pbmcsIGRv
IG5vdCByZW1vdmUgdGhlIHdhcm5pbmcgdW50aWwgY29udGVudCBpcyBkcmF3biBmb3IgdGhlIGRl
c3RpbmF0aW9uLgorICAgICAgICBPdGhlcndpc2UsIHRoZSB1c2VyIHdpbGwgY29uZnVzaW5nbHkg
c2VlIHRoZSBwYWdlIGJlZm9yZSB0aGUgd2FybmluZyB3aGlsZSB0aGUgbmF2aWdhdGlvbiBoYXBw
ZW5zLgorICAgICAgICBXZSBjYW4gb25seSBkbyB0aGlzIGZvciB3YXJuaW5ncyBjYXVzZWQgYnkg
bWFpbiBmcmFtZSBuYXZpZ2F0aW9ucywgdGhvdWdoLiAgT3RoZXIgd2FybmluZ3MgKHN1Y2ggYXMg
dGhvc2UgY2F1c2VkIGJ5IGlmcmFtZXMpCisgICAgICAgIG5lZWQgdG8gYmUgY2xlYXJlZCBpbW1l
ZGlhdGVseSwgYW5kIHdlIHN0aWxsIG5lZWQgdG8gY2xlYXIgdGhlIHdhcm5pbmcgaW1tZWRpYXRl
bHkgaWYgdGhlIHVzZXIgaGFzIHNhaWQgdG8gZ28gYmFjay4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBpcyByZWZsZWN0ZWQgaW4gYW4gdXBkYXRlZCBBUEkgdGVzdC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nob3dT
YWZlQnJvd3NpbmdXYXJuaW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OlNhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2luZ1dhcm5pbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOgorICAgICAgICAoLVtXS1NhZmVCcm93
c2luZ1dhcm5pbmcgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2FybmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGVhclNhZmVCcm93c2luZ1dhcm5pbmdJ
ZkZvck1haW5GcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmNsZWFyU2FmZUJyb3dzaW5nV2Fybmlu
Z0lmRm9yTWFpbkZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVCcm93
c2luZ1dhcm5pbmcuaDoKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Zm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlY2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjbGVhclNh
ZmVCcm93c2luZ1dhcm5pbmdJZkZvck1haW5GcmFtZU5hdmlnYXRpb24pOgorCiAyMDE4LTEyLTE4
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjM5MTM0KSBpT1Mgc2FmZSBicm93c2luZyB3YXJuaW5nIHVuYWJsZSB0byBz
aG93IGRldGFpbHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlz
aW9uIDIzOTMzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzaG93U2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PENvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihDb250aW51ZVVuc2FmZUxv
YWQ6Olllcyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyU2FmZUJyb3dzaW5nV2FybmluZ0lmRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbigpIHsgfQogICAgIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAjaWYg
UExBVEZPUk0oR1RLKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5n
V2FybmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NhZmVCcm93
c2luZ1dhcm5pbmcuaAkocmV2aXNpb24gMjM5MzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2FmZUJyb3dzaW5nV2FybmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2FmZUJyb3dzaW5nV2FybmluZyA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNhZmVCcm93c2luZ1dhcm5pbmc+IHsKIHB1YmxpYzoKICNpZiBIQVZFKFNBRkVf
QlJPV1NJTkcpCi0gICAgc3RhdGljIFJlZjxTYWZlQnJvd3NpbmdXYXJuaW5nPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKKyAgICBzdGF0aWMg
UmVmPFNhZmVCcm93c2luZ1dhcm5pbmc+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgYm9vbCBmb3JN
YWluRnJhbWVOYXZpZ2F0aW9uLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdXYXJuaW5nKHVybCwg
cmVzdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNhZmVCcm93c2luZ1dhcm5p
bmcodXJsLCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCByZXN1bHQpKTsKICAgICB9CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgIGNvbnN0IFN0cmluZyYgd2Fybmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fd2FybmluZzsgfQorICAgIGJvb2wgZm9yTWFpbkZyYW1lTmF2
aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yTWFpbkZyYW1lTmF2aWdhdGlvbjsgfQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGRldGFp
bHMoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbHM7IH0KICNlbmRpZgpAQCAtNjMsNyArNjQsNyBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBT
YWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFVSTCYsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKik7
CisgICAgU2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBVUkwmLCBib29sLCBTU0JTZXJ2aWNlTG9v
a3VwUmVzdWx0ICopOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2FmZUJyb3dz
aW5nV2FybmluZyhVUkwmJiwgU3RyaW5nJiYsIFN0cmluZyYmLCBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiYmKTsKQEAgLTcyLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7
CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fd2FybmluZzsKKyAgICBib29sIG1f
Zm9yTWFpbkZyYW1lTmF2aWdhdGlvbiB7IGZhbHNlIH07CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gbV9kZXRhaWxzOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzOTMz
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxOTUsNiArNDE5NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWFjaExh
eW91dE1pbGVzdG8KIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCisgICAgaWYgKGxheW91dE1pbGVzdG9uZXMuY29udGFpbnMoRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KSkKKyAgICAgICAgcGFnZUNsaWVudCgpLmNsZWFyU2FmZUJyb3dz
aW5nV2FybmluZ0lmRm9yTWFpbkZyYW1lTmF2aWdhdGlvbigpOworICAgIAogICAgIGlmIChtX2xv
YWRlckNsaWVudCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlYWNoTGF5b3V0TWlsZXN0
b25lKCp0aGlzLCBsYXlvdXRNaWxlc3RvbmVzKTsKICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJl
bmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBsYXlvdXRNaWxlc3RvbmVzKTsKQEAgLTQy
NTAsNyArNDI1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2UK
IH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVC
cm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgbGlz
dGVuZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBV
UkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIGxpc3RlbmVyKQogewogICAg
IGxpc3RlbmVyLmRpZFJlY2VpdmVTYWZlQnJvd3NpbmdSZXN1bHRzKHsgfSk7CiB9CkBAIC00MzY3
LDcgKzQzNzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAK
ICAgICB9LCBzaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQpKTsKICAgICBpZiAoc2hvdWxk
RXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0ID09IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3Vs
dDo6WWVzKQotICAgICAgICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3QudXJsKCksIGxp
c3RlbmVyKTsKKyAgICAgICAgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhyZXF1ZXN0LnVybCgpLCBm
cmFtZS5pc01haW5GcmFtZSgpLCBsaXN0ZW5lcik7CiAKICAgICBBUEk6Ok5hdmlnYXRpb24qIG1h
aW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQo
KSA6IG51bGxwdHI7CiAgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG1fcHJv
Y2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzOTMzOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDk0LDcgKzE0OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZv
aWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkmKTsKKyAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwg
Ym9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAKICAgICB2b2lkIHdpbGxTdWJt
aXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM5
MzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTI3OSw5ICsxMjc5LDE3IEBAIC0gKHZvaWQpX2RpZENoYW5nZUVk
aXRvclN0YXRlCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0
OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4m
Jik+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfc2FmZUJyb3dzaW5nV2FybmluZyA9IGFk
b3B0TlMoW1tXS1NhZmVCcm93c2luZ1dhcm5pbmcgYWxsb2NdIGluaXRXaXRoRnJhbWU6c2VsZi5i
b3VuZHMgc2FmZUJyb3dzaW5nV2FybmluZzp3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOlt3ZWFr
U2VsZiA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpKQotICAgICAgICAgICAg
W3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3NhZmVCcm93c2luZ1dhcm5pbmcsIG51bGxwdHIp
IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdCkpOworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAg
ICAgICAgaWYgKCFzdHJvbmdTZWxmKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBib29s
IG5hdmlnYXRlc01haW5GcmFtZSA9IFdURjo6c3dpdGNoT24ocmVzdWx0LAorICAgICAgICAgICAg
W10gKFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkIGNvbnRpbnVlVW5zYWZlTG9hZCkgeyByZXR1
cm4gY29udGludWVVbnNhZmVMb2FkID09IFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkOjpZZXM7
IH0sCisgICAgICAgICAgICBbXSAoY29uc3QgVVJMJikgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAg
ICApOworICAgICAgICBpZiAobmF2aWdhdGVzTWFpbkZyYW1lICYmIFtzdHJvbmdTZWxmLT5fc2Fm
ZUJyb3dzaW5nV2FybmluZyBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uXSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgW3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3NhZmVCcm93c2luZ1dh
cm5pbmcsIG51bGxwdHIpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIH1dKTsKICAgICBbc2Vs
ZiBhZGRTdWJ2aWV3Ol9zYWZlQnJvd3NpbmdXYXJuaW5nLmdldCgpXTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJu
aW5nQ29jb2EubW0JKHJldmlzaW9uIDIzOTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ5
LDEwICsxNDksMTEgQEAgc3RhdGljIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnNhZmVCcgog
ICAgIHJldHVybiBtYWx3YXJlT3JVbndhbnRlZFNvZnR3YXJlRGV0YWlscyhXRUJfVUlfTlNTVFJJ
TkcoQCJXYXJuaW5ncyBhcmUgc2hvd24gZm9yIHdlYnNpdGVzIHdoZXJlIGhhcm1mdWwgc29mdHdh
cmUgaGFzIGJlZW4gZGV0ZWN0ZWQuIFlvdSBjYW4gY2hlY2sgJXRoZS1zdGF0dXMtb2Ytc2l0ZSUg
b24gdGhlICVzYWZlQnJvd3NpbmdQcm92aWRlciUgZGlhZ25vc3RpYyBwYWdlLiIsICJVbndhbnRl
ZCBzb2Z0d2FyZSB3YXJuaW5nIGRlc2NyaXB0aW9uIiksIEAiJXRoZS1zdGF0dXMtb2Ytc2l0ZSUi
LCBmYWxzZSk7CiB9CiAKLVNhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2luZ1dhcm5pbmco
Y29uc3QgVVJMJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKK1NhZmVCcm93
c2luZ1dhcm5pbmc6OlNhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgVVJMJiB1cmwsIGJvb2wgZm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogICAg
IDogbV91cmwodXJsKQogICAgICwgbV90aXRsZShzYWZlQnJvd3NpbmdUaXRsZVRleHQocmVzdWx0
KSkKICAgICAsIG1fd2FybmluZyhzYWZlQnJvd3NpbmdXYXJuaW5nVGV4dChyZXN1bHQpKQorICAg
ICwgbV9mb3JNYWluRnJhbWVOYXZpZ2F0aW9uKGZvck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAg
LCBtX2RldGFpbHMoc2FmZUJyb3dzaW5nRGV0YWlsc1RleHQodXJsLCByZXN1bHQpKQogewogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJv
d3NpbmdXYXJuaW5nLmgJKHJldmlzaW9uIDIzOTM2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw0
ICs2MSw2IEBAIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0OwogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooUmVjdFR5cGUpZnJhbWUgc2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2Vi
S2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVS
TD4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAKKy0gKEJPT0wpZm9yTWFpbkZyYW1lTmF2aWdh
dGlvbjsKKwogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZl
QnJvd3NpbmdXYXJuaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQkocmV2aXNpb24gMjM5MzY3KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDExIEBAIC0gKHZvaWQpY2xpY2tlZE9uTGluazooTlNV
UkwgKilsaW5rCiAgICAgX2NvbXBsZXRpb25IYW5kbGVyKChOU1VSTCAqKWxpbmspOwogfQogCist
IChCT09MKWZvck1haW5GcmFtZU5hdmlnYXRpb24KK3sKKyAgICByZXR1cm4gX3dhcm5pbmctPmZv
ck1haW5GcmFtZU5hdmlnYXRpb24oKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tT
YWZlQnJvd3NpbmdUZXh0VmlldwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDIzOTMzOCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03MiwxNCArNzIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjbwogICAgIHNlYXJjaEl0ZW1zID0gV2ViQ29yZTo6bG9hZFJlY2VudFNlYXJjaGVzKG5h
bWUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25z
dCBVUkwmIHVybCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBsaXN0ZW5lcikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYgdXJsLCBib29s
IGZvck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgbGlz
dGVuZXIpCiB7CiAjaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAgIFNTQkxvb2t1cENvbnRleHQg
KmNvbnRleHQgPSBbU1NCTG9va3VwQ29udGV4dCBzaGFyZWRMb29rdXBDb250ZXh0XTsKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBsaXN0ZW5lci5kaWRSZWNlaXZlU2FmZUJyb3dz
aW5nUmVzdWx0cyh7IH0pOwotICAgIFtjb250ZXh0IGxvb2tVcFVSTDp1cmwgY29tcGxldGlvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtsaXN0ZW5lciA9IG1ha2VSZWYobGlzdGVuZXIpLCB1cmwgPSB1
cmxdIChTU0JMb29rdXBSZXN1bHQgKnJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2xpc3RlbmVyID0gV1RGTW92ZShsaXN0
ZW5lciksIHJlc3VsdCA9IHJldGFpblB0cihyZXN1bHQpLCBlcnJvciA9IHJldGFpblB0cihlcnJv
ciksIHVybCA9IFdURk1vdmUodXJsKV0geworICAgIFtjb250ZXh0IGxvb2tVcFVSTDp1cmwgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtsaXN0ZW5lciA9IG1ha2VSZWYobGlzdGVuZXIp
LCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCB1cmwgPSB1cmxdIChTU0JMb29rdXBSZXN1bHQgKnJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2xpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lciksIHJlc3VsdCA9IHJldGFpblB0
cihyZXN1bHQpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGZvck1haW5GcmFtZU5hdmlnYXRp
b24sIHVybCA9IFdURk1vdmUodXJsKV0gewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVTYWZlQnJvd3NpbmdSZXN1bHRzKHsgfSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODcsNyArODcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjCiAKICAgICAgICAgICAgIGZvciAoU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdCAqbG9va3VwUmVzdWx0IGluIFtyZXN1bHQgc2VydmljZUxvb2t1cFJlc3Vs
dHNdKSB7CiAgICAgICAgICAgICAgICAgaWYgKGxvb2t1cFJlc3VsdC5pc1BoaXNoaW5nIHx8IGxv
b2t1cFJlc3VsdC5pc01hbHdhcmUgfHwgbG9va3VwUmVzdWx0LmlzVW53YW50ZWRTb2Z0d2FyZSkg
ewotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZVNhZmVCcm93c2luZ1Jl
c3VsdHMoU2FmZUJyb3dzaW5nV2FybmluZzo6Y3JlYXRlKHVybCwgbG9va3VwUmVzdWx0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kaWRSZWNlaXZlU2FmZUJyb3dzaW5nUmVzdWx0
cyhTYWZlQnJvd3NpbmdXYXJuaW5nOjpjcmVhdGUodXJsLCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBsb29rdXBSZXN1bHQpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjM5MzM4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDYgKzIy
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2hvd1NhZmVCcm93c2luZ1dhcm5pbmcoY29uc3Qg
U2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxDb250
aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpOwogICAgIHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdX
YXJuaW5nKCk7CisgICAgdm9pZCBjbGVhclNhZmVCcm93c2luZ1dhcm5pbmdJZkZvck1haW5GcmFt
ZU5hdmlnYXRpb24oKTsKIAogICAgIFdLTGF5b3V0TW9kZSBsYXlvdXRNb2RlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRMYXlvdXRNb2RlKFdLTGF5b3V0TW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjM5MzM4KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE2MjIsOSArMTYyMiwxNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dz
aW5nV2FybmluCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihDb250aW51ZVVuc2Fm
ZUxvYWQ6Olllcyk7CiAKICAgICBtX3NhZmVCcm93c2luZ1dhcm5pbmcgPSBhZG9wdE5TKFtbV0tT
YWZlQnJvd3NpbmdXYXJuaW5nIGFsbG9jXSBpbml0V2l0aEZyYW1lOlttX3ZpZXcgYm91bmRzXSBz
YWZlQnJvd3NpbmdXYXJuaW5nOndhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhp
cykKLSAgICAgICAgICAgIFtzdGQ6OmV4Y2hhbmdlKHdlYWtUaGlzLT5tX3NhZmVCcm93c2luZ1dh
cm5pbmcsIG51bGxwdHIpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBib29sIG5hdmlnYXRlc01haW5GcmFtZSA9IFdURjo6c3dp
dGNoT24ocmVzdWx0LAorICAgICAgICAgICAgW10gKENvbnRpbnVlVW5zYWZlTG9hZCBjb250aW51
ZVVuc2FmZUxvYWQpIHsgcmV0dXJuIGNvbnRpbnVlVW5zYWZlTG9hZCA9PSBDb250aW51ZVVuc2Fm
ZUxvYWQ6OlllczsgfSwKKyAgICAgICAgICAgIFtdIChjb25zdCBVUkwmKSB7IHJldHVybiB0cnVl
OyB9CisgICAgICAgICk7CisgICAgICAgIGlmIChuYXZpZ2F0ZXNNYWluRnJhbWUgJiYgW3dlYWtU
aGlzLT5tX3NhZmVCcm93c2luZ1dhcm5pbmcgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbl0pCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIFtzdGQ6OmV4Y2hhbmdlKHdlYWtUaGlzLT5tX3NhZmVC
cm93c2luZ1dhcm5pbmcsIG51bGxwdHIpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIH1dKTsK
ICAgICBbbV92aWV3IGFkZFN1YnZpZXc6bV9zYWZlQnJvd3NpbmdXYXJuaW5nLmdldCgpXTsKIH0K
QEAgLTE2MzQsNiArMTY0MSwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjbGVhclNhZmVCcm93c2lu
Z1dhcm5pCiAgICAgW3N0ZDo6ZXhjaGFuZ2UobV9zYWZlQnJvd3NpbmdXYXJuaW5nLCBudWxscHRy
KSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6Y2xlYXJTYWZl
QnJvd3NpbmdXYXJuaW5nSWZGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKCkKK3sKKyAgICBpZiAoW21f
c2FmZUJyb3dzaW5nV2FybmluZyBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uXSkKKyAgICAgICAgY2xl
YXJTYWZlQnJvd3NpbmdXYXJuaW5nKCk7Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OmlzRm9jdXNl
ZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faW5CZWNvbWVGaXJzdFJlc3BvbmRlcikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCShyZXZp
c2lvbiAyMzkzMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dhcm5pbmcm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxv
YWQsIFVSTD4mJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJu
aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclNhZmVCcm93c2luZ1dhcm5pbmdJZkZvck1h
aW5GcmFtZU5hdmlnYXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShyZXZp
c2lvbiAyMzkzMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dTYWZlQnJv
d3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dhcm5pbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjbGVhclNhZmVCcm93c2luZ1dhcm5pbmdJZkZvck1haW5GcmFtZU5hdmlnYXRpb24o
KSBvdmVycmlkZTsKICAgICAKICNpZiBXS19BUElfRU5BQkxFRAogICAgIGJvb2wgc2hvd1NoYXJl
U2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCShyZXZpc2lvbiAyMzkz
MzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTUwMSw2ICs1MDEsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
Y2xlYXJTYWZlQnJvd3NpbmdXYQogICAgIG1faW1wbC0+Y2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5n
KCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNsZWFyU2FmZUJyb3dzaW5nV2FybmluZ0lm
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbigpCit7CisgICAgbV9pbXBsLT5jbGVhclNhZmVCcm93c2lu
Z1dhcm5pbmdJZkZvck1haW5GcmFtZU5hdmlnYXRpb24oKTsKK30KKwogdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2V0VGV4dEluZGljYXRvcihSZWY8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciwg
V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lIGxpZmV0aW1lKQogewogICAgIG1f
aW1wbC0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLmdldCgpLCBsaWZldGltZSk7Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMzkzOTYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOC0xMi0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIE5hdmlnYXRpb25zIGF3YXkgZnJvbSB0aGUgU2FmZUJyb3dzaW5n
IGludGVyc3RpdGlhbCBzaG93IGEgZmxhc2ggb2Ygb2xkIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY3NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW06CisgICAgICAgIChzYWZlQnJvd3NpbmdWaWV3KToK
KyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtTYWZlQnJvd3NpbmdIZWxwZXIgd2ViVmlldzpy
dW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisKIDIwMTgtMTItMTkgIE1lZ2FuIEdhcmRuZXIgIDxt
ZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBjbGllbnRzIHRvIHNldCB0
aGUgbmF2aWdhdG9yIHBsYXRmb3JtCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NhZmVCcm93c2luZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5tbQkocmV2aXNpb24gMjM5MzU2KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI4MSwyNCArMjgxLDE3IEBAIFRFU1QoU2FmZUJyb3dzaW5nLCBT
aG93V2FybmluZ1NQSSkKIH0KIAogc3RhdGljIFZlY3RvcjxVUkw+IHVybHM7Ci1zdGF0aWMgYm9v
bCBkb25lOwogCi1AaW50ZXJmYWNlIFNhZmVCcm93c2luZ0hlbHBlciA6IE5TT2JqZWN0PFdLTmF2
aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGU+CitAaW50ZXJmYWNlIFNhZmVCcm93c2luZ09i
c2VydmVyIDogTlNPYmplY3QKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFNhZmVCcm93c2luZ0hl
bHBlcgorQGltcGxlbWVudGF0aW9uIFNhZmVCcm93c2luZ09ic2VydmVyCiAKIC0gKHZvaWQpb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmpl
Y3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6
KHZvaWQgKiljb250ZXh0CiB7CiAgICAgdXJscy5hcHBlbmQoKE5TVVJMICopW2NoYW5nZSBvYmpl
Y3RGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0pOwogfQogCi0tICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0g
ICAgZG9uZSA9IHRydWU7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLX0KLQogQGVuZAogCiBU
RVNUKFNhZmVCcm93c2luZywgVVJMT2JzZXJ2YXRpb24pCkBAIC0zMDcsMjUgKzMwMCwyNCBAQCBU
RVNUKFNhZmVCcm93c2luZywgVVJMT2JzZXJ2YXRpb24pCiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IHNpbXBsZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOwogICAgIFJldGFpblB0cjxOU1VSTD4gc2ltcGxlMlVSTCA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLSAgICBhdXRvIGhl
bHBlciA9IGFkb3B0TlMoW1NhZmVCcm93c2luZ0hlbHBlciBuZXddKTsKKyAgICBhdXRvIG9ic2Vy
dmVyID0gYWRvcHROUyhbU2FmZUJyb3dzaW5nT2JzZXJ2ZXIgbmV3XSk7CiAKICAgICBhdXRvIHdl
YlZpZXdXaXRoV2FybmluZyA9IFsmXSAoKSAtPiBSZXRhaW5QdHI8V0tXZWJWaWV3PiB7CiAgICAg
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKLSAgICAgICAgW3dl
YlZpZXcgc2V0VUlEZWxlZ2F0ZTpoZWxwZXIuZ2V0KCldOwotICAgICAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6aGVscGVyLmdldCgpXTsKLSAgICAgICAgW3dlYlZpZXcgYWRkT2Jz
ZXJ2ZXI6aGVscGVyLmdldCgpIGZvcktleVBhdGg6QCJVUkwiIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgICAgIFt3ZWJWaWV3IGFkZE9ic2Vy
dmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJVUkwiIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CiAKLSAgICAgICAgW3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6QCI8c2NyaXB0PmFsZXJ0KCdsb2FkZWQnKTwvc2NyaXB0PiIgYmFzZVVSTDpzaW1w
bGVVUkwuZ2V0KCldOworICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIm1lYW5pbmdm
dWwgY29udGVudCB0byBiZSBkcmF3biIgYmFzZVVSTDpzaW1wbGVVUkwuZ2V0KCldOwogICAgICAg
ICB3aGlsZSAoIVt3ZWJWaWV3IF9zYWZlQnJvd3NpbmdXYXJuaW5nXSkKICAgICAgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CiAjaWYgIVBMQVRGT1JNKE1BQykKICAg
ICAgICAgW1t3ZWJWaWV3IF9zYWZlQnJvd3NpbmdXYXJuaW5nXSBkaWRNb3ZlVG9XaW5kb3ddOwog
I2VuZGlmCiAgICAgICAgIHZpc2l0VW5zYWZlU2l0ZShbd2ViVmlldyBfc2FmZUJyb3dzaW5nV2Fy
bmluZ10pOwotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgICAg
ICBFWFBFQ1RfVFJVRSghIVt3ZWJWaWV3IF9zYWZlQnJvd3NpbmdXYXJuaW5nXSk7CisgICAgICAg
IHdoaWxlIChbd2ViVmlldyBfc2FmZUJyb3dzaW5nV2FybmluZ10pCisgICAgICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoISFb
d2ViVmlldyBfc2FmZUJyb3dzaW5nV2FybmluZ10pOwogCi0gICAgICAgIGRvbmUgPSBmYWxzZTsK
ICAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAid2luZG93LmxvY2F0aW9uPSclQCciLCBzaW1wbGUyVVJMLmdldCgpXSBjb21wbGV0
aW9uSGFuZGxlcjpuaWxdOwogICAgICAgICB3aGlsZSAoIVt3ZWJWaWV3IF9zYWZlQnJvd3NpbmdX
YXJuaW5nXSkKICAgICAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7
CkBAIC0zNDgsNyArMzQwLDcgQEAgVEVTVChTYWZlQnJvd3NpbmcsIFVSTE9ic2VydmF0aW9uKQog
ICAgICAgICBjaGVja1VSTHMoeyBzaW1wbGVVUkwsIHNpbXBsZTJVUkwgfSk7CiAgICAgICAgIGdv
QmFjayhbd2ViVmlldyBfc2FmZUJyb3dzaW5nV2FybmluZ10pOwogICAgICAgICBjaGVja1VSTHMo
eyBzaW1wbGVVUkwsIHNpbXBsZTJVUkwsIHNpbXBsZVVSTCB9KTsKLSAgICAgICAgW3dlYlZpZXcg
cmVtb3ZlT2JzZXJ2ZXI6aGVscGVyLmdldCgpIGZvcktleVBhdGg6QCJVUkwiXTsKKyAgICAgICAg
W3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIlVSTCJd
OwogICAgIH0KICAgICAKICAgICB1cmxzLmNsZWFyKCk7CkBAIC0zNTksNyArMzUxLDcgQEAgVEVT
VChTYWZlQnJvd3NpbmcsIFVSTE9ic2VydmF0aW9uKQogICAgICAgICB2aXNpdFVuc2FmZVNpdGUo
W3dlYlZpZXcgX3NhZmVCcm93c2luZ1dhcm5pbmddKTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c3BpblJ1bkxvb3AoNSk7CiAgICAgICAgIGNoZWNrVVJMcyh7IHNpbXBsZVVSTCwgc2lt
cGxlMlVSTCB9KTsKLSAgICAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6aGVscGVyLmdldCgp
IGZvcktleVBhdGg6QCJVUkwiXTsKKyAgICAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2Jz
ZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIlVSTCJdOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357742</attachid>
            <date>2018-12-19 15:49:51 -0800</date>
            <delta_ts>2018-12-19 16:42:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192676-20181219154949.patch</filename>
            <type>text/plain</type>
            <size>24099</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzkzNjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTEyLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmF2aWdhdGlvbnMg
YXdheSBmcm9tIHRoZSBTYWZlQnJvd3NpbmcgaW50ZXJzdGl0aWFsIHNob3cgYSBmbGFzaCBvZiBv
bGQgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNjc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhIHVzZXIgY2xpY2tzIHRocm91Z2ggYSBzYWZlIGJyb3dzaW5nIHdhcm5pbmcsIGRv
IG5vdCByZW1vdmUgdGhlIHdhcm5pbmcgdW50aWwgY29udGVudCBpcyBkcmF3biBmb3IgdGhlIGRl
c3RpbmF0aW9uLgorICAgICAgICBPdGhlcndpc2UsIHRoZSB1c2VyIHdpbGwgY29uZnVzaW5nbHkg
c2VlIHRoZSBwYWdlIGJlZm9yZSB0aGUgd2FybmluZyB3aGlsZSB0aGUgbmF2aWdhdGlvbiBoYXBw
ZW5zLgorICAgICAgICBXZSBjYW4gb25seSBkbyB0aGlzIGZvciB3YXJuaW5ncyBjYXVzZWQgYnkg
bWFpbiBmcmFtZSBuYXZpZ2F0aW9ucywgdGhvdWdoLiAgT3RoZXIgd2FybmluZ3MgKHN1Y2ggYXMg
dGhvc2UgY2F1c2VkIGJ5IGlmcmFtZXMpCisgICAgICAgIG5lZWQgdG8gYmUgY2xlYXJlZCBpbW1l
ZGlhdGVseSwgYW5kIHdlIHN0aWxsIG5lZWQgdG8gY2xlYXIgdGhlIHdhcm5pbmcgaW1tZWRpYXRl
bHkgaWYgdGhlIHVzZXIgaGFzIHNhaWQgdG8gZ28gYmFjay4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBpcyByZWZsZWN0ZWQgaW4gYW4gdXBkYXRlZCBBUEkgdGVzdC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nob3dT
YWZlQnJvd3NpbmdXYXJuaW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OlNhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2luZ1dhcm5pbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOgorICAgICAgICAoLVtXS1NhZmVCcm93
c2luZ1dhcm5pbmcgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2FybmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGVhclNhZmVCcm93c2luZ1dhcm5pbmdJ
ZkZvck1haW5GcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmNsZWFyU2FmZUJyb3dzaW5nV2Fybmlu
Z0lmRm9yTWFpbkZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVCcm93
c2luZ1dhcm5pbmcuaDoKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Zm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlY2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjbGVhclNh
ZmVCcm93c2luZ1dhcm5pbmdJZkZvck1haW5GcmFtZU5hdmlnYXRpb24pOgorCiAyMDE4LTEyLTE4
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjM5MTM0KSBpT1Mgc2FmZSBicm93c2luZyB3YXJuaW5nIHVuYWJsZSB0byBz
aG93IGRldGFpbHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlz
aW9uIDIzOTMzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzaG93U2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PENvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihDb250aW51ZVVuc2FmZUxv
YWQ6Olllcyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyU2FmZUJyb3dzaW5nV2FybmluZ0lmRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbigpIHsgfQogICAgIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAjaWYg
UExBVEZPUk0oR1RLKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5n
V2FybmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NhZmVCcm93
c2luZ1dhcm5pbmcuaAkocmV2aXNpb24gMjM5MzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2FmZUJyb3dzaW5nV2FybmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2FmZUJyb3dzaW5nV2FybmluZyA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNhZmVCcm93c2luZ1dhcm5pbmc+IHsKIHB1YmxpYzoKICNpZiBIQVZFKFNBRkVf
QlJPV1NJTkcpCi0gICAgc3RhdGljIFJlZjxTYWZlQnJvd3NpbmdXYXJuaW5nPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKKyAgICBzdGF0aWMg
UmVmPFNhZmVCcm93c2luZ1dhcm5pbmc+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgYm9vbCBmb3JN
YWluRnJhbWVOYXZpZ2F0aW9uLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdXYXJuaW5nKHVybCwg
cmVzdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNhZmVCcm93c2luZ1dhcm5p
bmcodXJsLCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCByZXN1bHQpKTsKICAgICB9CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgIGNvbnN0IFN0cmluZyYgd2Fybmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fd2FybmluZzsgfQorICAgIGJvb2wgZm9yTWFpbkZyYW1lTmF2
aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yTWFpbkZyYW1lTmF2aWdhdGlvbjsgfQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGRldGFp
bHMoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbHM7IH0KICNlbmRpZgpAQCAtNjMsNyArNjQsNyBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBT
YWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFVSTCYsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKik7
CisgICAgU2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBVUkwmLCBib29sLCBTU0JTZXJ2aWNlTG9v
a3VwUmVzdWx0ICopOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2FmZUJyb3dz
aW5nV2FybmluZyhVUkwmJiwgU3RyaW5nJiYsIFN0cmluZyYmLCBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiYmKTsKQEAgLTcyLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7
CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fd2FybmluZzsKKyAgICBib29sIG1f
Zm9yTWFpbkZyYW1lTmF2aWdhdGlvbiB7IGZhbHNlIH07CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gbV9kZXRhaWxzOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzOTMz
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxOTUsNiArNDE5NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWFjaExh
eW91dE1pbGVzdG8KIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCisgICAgaWYgKGxheW91dE1pbGVzdG9uZXMuY29udGFpbnMoRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KSkKKyAgICAgICAgcGFnZUNsaWVudCgpLmNsZWFyU2FmZUJyb3dz
aW5nV2FybmluZ0lmRm9yTWFpbkZyYW1lTmF2aWdhdGlvbigpOworICAgIAogICAgIGlmIChtX2xv
YWRlckNsaWVudCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlYWNoTGF5b3V0TWlsZXN0
b25lKCp0aGlzLCBsYXlvdXRNaWxlc3RvbmVzKTsKICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJl
bmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBsYXlvdXRNaWxlc3RvbmVzKTsKQEAgLTQy
NTAsNyArNDI1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2UK
IH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVC
cm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgbGlz
dGVuZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBV
UkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIGxpc3RlbmVyKQogewogICAg
IGxpc3RlbmVyLmRpZFJlY2VpdmVTYWZlQnJvd3NpbmdSZXN1bHRzKHsgfSk7CiB9CkBAIC00MzY3
LDcgKzQzNzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAK
ICAgICB9LCBzaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQpKTsKICAgICBpZiAoc2hvdWxk
RXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0ID09IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3Vs
dDo6WWVzKQotICAgICAgICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3QudXJsKCksIGxp
c3RlbmVyKTsKKyAgICAgICAgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhyZXF1ZXN0LnVybCgpLCBm
cmFtZS5pc01haW5GcmFtZSgpLCBsaXN0ZW5lcik7CiAKICAgICBBUEk6Ok5hdmlnYXRpb24qIG1h
aW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQo
KSA6IG51bGxwdHI7CiAgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG1fcHJv
Y2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzOTMzOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDk0LDcgKzE0OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZv
aWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkmKTsKKyAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwg
Ym9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAKICAgICB2b2lkIHdpbGxTdWJt
aXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM5
MzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTI3OSw5ICsxMjc5LDE3IEBAIC0gKHZvaWQpX2RpZENoYW5nZUVk
aXRvclN0YXRlCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0
OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4m
Jik+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfc2FmZUJyb3dzaW5nV2FybmluZyA9IGFk
b3B0TlMoW1tXS1NhZmVCcm93c2luZ1dhcm5pbmcgYWxsb2NdIGluaXRXaXRoRnJhbWU6c2VsZi5i
b3VuZHMgc2FmZUJyb3dzaW5nV2FybmluZzp3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOlt3ZWFr
U2VsZiA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpKQotICAgICAgICAgICAg
W3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3NhZmVCcm93c2luZ1dhcm5pbmcsIG51bGxwdHIp
IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdCkpOworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAg
ICAgICAgaWYgKCFzdHJvbmdTZWxmKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBib29s
IG5hdmlnYXRlc01haW5GcmFtZSA9IFdURjo6c3dpdGNoT24ocmVzdWx0LAorICAgICAgICAgICAg
W10gKFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkIGNvbnRpbnVlVW5zYWZlTG9hZCkgeyByZXR1
cm4gY29udGludWVVbnNhZmVMb2FkID09IFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkOjpZZXM7
IH0sCisgICAgICAgICAgICBbXSAoY29uc3QgVVJMJikgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAg
ICApOworICAgICAgICBpZiAobmF2aWdhdGVzTWFpbkZyYW1lICYmIFtzdHJvbmdTZWxmLT5fc2Fm
ZUJyb3dzaW5nV2FybmluZyBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uXSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgW3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3NhZmVCcm93c2luZ1dh
cm5pbmcsIG51bGxwdHIpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIH1dKTsKICAgICBbc2Vs
ZiBhZGRTdWJ2aWV3Ol9zYWZlQnJvd3NpbmdXYXJuaW5nLmdldCgpXTsKIH0KQEAgLTEyOTEsNiAr
MTI5OSwxMiBAQCAtICh2b2lkKV9jbGVhclNhZmVCcm93c2luZ1dhcm5pbmcKICAgICBbc3RkOjpl
eGNoYW5nZShfc2FmZUJyb3dzaW5nV2FybmluZywgbnVsbHB0cikgcmVtb3ZlRnJvbVN1cGVydmll
d107CiB9CiAKKy0gKHZvaWQpX2NsZWFyU2FmZUJyb3dzaW5nV2FybmluZ0lmRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbgoreworICAgIGlmIChbX3NhZmVCcm93c2luZ1dhcm5pbmcgZm9yTWFpbkZyYW1l
TmF2aWdhdGlvbl0pCisgICAgICAgIFtzZWxmIF9jbGVhclNhZmVCcm93c2luZ1dhcm5pbmddOwor
fQorCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogLSAodm9pZClfZGlkSW5zZXJ0
QXR0YWNobWVudDooQVBJOjpBdHRhY2htZW50JilhdHRhY2htZW50IHdpdGhTb3VyY2U6KE5TU3Ry
aW5nICopc291cmNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMjM5MzM4KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4Miw2ICsxODIsNyBAQCBzdHJ1Y3QgUHJpbnRJbmZvOwogCiAtICh2b2lkKV9z
aG93U2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5n
Jil3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlh
bnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpY29tcGxldGlvbkhhbmRs
ZXI7CiAtICh2b2lkKV9jbGVhclNhZmVCcm93c2luZ1dhcm5pbmc7CistICh2b2lkKV9jbGVhclNh
ZmVCcm93c2luZ1dhcm5pbmdJZkZvck1haW5GcmFtZU5hdmlnYXRpb247CiAKIC0gKHN0ZDo6b3B0
aW9uYWw8Qk9PTD4pX3Jlc29sdXRpb25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZv
clRlc3Rpbmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93
c2luZ1dhcm5pbmdDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0JKHJldmlzaW9uIDIzOTMzOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDEwICsxNDksMTEgQEAgc3RhdGljIE5TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgKnNhZmVCcgogICAgIHJldHVybiBtYWx3YXJlT3JVbndhbnRlZFNvZnR3
YXJlRGV0YWlscyhXRUJfVUlfTlNTVFJJTkcoQCJXYXJuaW5ncyBhcmUgc2hvd24gZm9yIHdlYnNp
dGVzIHdoZXJlIGhhcm1mdWwgc29mdHdhcmUgaGFzIGJlZW4gZGV0ZWN0ZWQuIFlvdSBjYW4gY2hl
Y2sgJXRoZS1zdGF0dXMtb2Ytc2l0ZSUgb24gdGhlICVzYWZlQnJvd3NpbmdQcm92aWRlciUgZGlh
Z25vc3RpYyBwYWdlLiIsICJVbndhbnRlZCBzb2Z0d2FyZSB3YXJuaW5nIGRlc2NyaXB0aW9uIiks
IEAiJXRoZS1zdGF0dXMtb2Ytc2l0ZSUiLCBmYWxzZSk7CiB9CiAKLVNhZmVCcm93c2luZ1dhcm5p
bmc6OlNhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgVVJMJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBS
ZXN1bHQgKnJlc3VsdCkKK1NhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2luZ1dhcm5pbmco
Y29uc3QgVVJMJiB1cmwsIGJvb2wgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgU1NCU2VydmljZUxv
b2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIDogbV91cmwodXJsKQogICAgICwgbV90aXRsZShzYWZl
QnJvd3NpbmdUaXRsZVRleHQocmVzdWx0KSkKICAgICAsIG1fd2FybmluZyhzYWZlQnJvd3NpbmdX
YXJuaW5nVGV4dChyZXN1bHQpKQorICAgICwgbV9mb3JNYWluRnJhbWVOYXZpZ2F0aW9uKGZvck1h
aW5GcmFtZU5hdmlnYXRpb24pCiAgICAgLCBtX2RldGFpbHMoc2FmZUJyb3dzaW5nRGV0YWlsc1Rl
eHQodXJsLCByZXN1bHQpKQogewogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgJKHJldmlzaW9uIDIzOTM2NykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw0ICs2MSw2IEBAIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0
OwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooUmVjdFR5cGUpZnJhbWUgc2FmZUJy
b3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5n
IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0
OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAKKy0g
KEJPT0wpZm9yTWFpbkZyYW1lTmF2aWdhdGlvbjsKKwogQGVuZApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQko
cmV2aXNpb24gMjM5MzY3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZl
QnJvd3NpbmdXYXJuaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDExIEBAIC0g
KHZvaWQpY2xpY2tlZE9uTGluazooTlNVUkwgKilsaW5rCiAgICAgX2NvbXBsZXRpb25IYW5kbGVy
KChOU1VSTCAqKWxpbmspOwogfQogCistIChCT09MKWZvck1haW5GcmFtZU5hdmlnYXRpb24KK3sK
KyAgICByZXR1cm4gX3dhcm5pbmctPmZvck1haW5GcmFtZU5hdmlnYXRpb24oKTsKK30KKwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV0tTYWZlQnJvd3NpbmdUZXh0VmlldwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJl
dmlzaW9uIDIzOTMzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxNCArNzIsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjbwogICAgIHNlYXJjaEl0ZW1zID0gV2ViQ29y
ZTo6bG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmVn
aW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmIHVybCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5JiBsaXN0ZW5lcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0No
ZWNrKGNvbnN0IFVSTCYgdXJsLCBib29sIGZvck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSYgbGlzdGVuZXIpCiB7CiAjaWYgSEFWRShTQUZFX0JST1dTSU5H
KQogICAgIFNTQkxvb2t1cENvbnRleHQgKmNvbnRleHQgPSBbU1NCTG9va3VwQ29udGV4dCBzaGFy
ZWRMb29rdXBDb250ZXh0XTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBsaXN0
ZW5lci5kaWRSZWNlaXZlU2FmZUJyb3dzaW5nUmVzdWx0cyh7IH0pOwotICAgIFtjb250ZXh0IGxv
b2tVcFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtsaXN0ZW5lciA9IG1h
a2VSZWYobGlzdGVuZXIpLCB1cmwgPSB1cmxdIChTU0JMb29rdXBSZXN1bHQgKnJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2xpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lciksIHJlc3VsdCA9IHJldGFpblB0cihyZXN1bHQp
LCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIHVybCA9IFdURk1vdmUodXJsKV0geworICAgIFtj
b250ZXh0IGxvb2tVcFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtsaXN0
ZW5lciA9IG1ha2VSZWYobGlzdGVuZXIpLCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCB1cmwgPSB1
cmxdIChTU0JMb29rdXBSZXN1bHQgKnJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewor
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2xpc3RlbmVyID0gV1RGTW92ZShsaXN0
ZW5lciksIHJlc3VsdCA9IHJldGFpblB0cihyZXN1bHQpLCBlcnJvciA9IHJldGFpblB0cihlcnJv
ciksIGZvck1haW5GcmFtZU5hdmlnYXRpb24sIHVybCA9IFdURk1vdmUodXJsKV0gewogICAgICAg
ICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVT
YWZlQnJvd3NpbmdSZXN1bHRzKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODcs
NyArODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjCiAKICAg
ICAgICAgICAgIGZvciAoU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqbG9va3VwUmVzdWx0IGluIFty
ZXN1bHQgc2VydmljZUxvb2t1cFJlc3VsdHNdKSB7CiAgICAgICAgICAgICAgICAgaWYgKGxvb2t1
cFJlc3VsdC5pc1BoaXNoaW5nIHx8IGxvb2t1cFJlc3VsdC5pc01hbHdhcmUgfHwgbG9va3VwUmVz
dWx0LmlzVW53YW50ZWRTb2Z0d2FyZSkgewotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
ZGlkUmVjZWl2ZVNhZmVCcm93c2luZ1Jlc3VsdHMoU2FmZUJyb3dzaW5nV2FybmluZzo6Y3JlYXRl
KHVybCwgbG9va3VwUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kaWRS
ZWNlaXZlU2FmZUJyb3dzaW5nUmVzdWx0cyhTYWZlQnJvd3NpbmdXYXJuaW5nOjpjcmVhdGUodXJs
LCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBsb29rdXBSZXN1bHQpKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjM5
MzM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjI5LDYgKzIyOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2hvd1Nh
ZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmFyaWFudDxDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpOwogICAg
IHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCk7CisgICAgdm9pZCBjbGVhclNhZmVCcm93
c2luZ1dhcm5pbmdJZkZvck1haW5GcmFtZU5hdmlnYXRpb24oKTsKIAogICAgIFdLTGF5b3V0TW9k
ZSBsYXlvdXRNb2RlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMYXlvdXRNb2RlKFdLTGF5b3V0TW9k
ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkocmV2aXNpb24gMjM5MzM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MjIsOSArMTYyMiwxNiBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2FybmluCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihDb250aW51ZVVuc2FmZUxvYWQ6Olllcyk7CiAKICAgICBtX3NhZmVCcm93c2lu
Z1dhcm5pbmcgPSBhZG9wdE5TKFtbV0tTYWZlQnJvd3NpbmdXYXJuaW5nIGFsbG9jXSBpbml0V2l0
aEZyYW1lOlttX3ZpZXcgYm91bmRzXSBzYWZlQnJvd3NpbmdXYXJuaW5nOndhcm5pbmcgY29tcGxl
dGlvbkhhbmRsZXI6W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIFtzdGQ6OmV4Y2hhbmdlKHdl
YWtUaGlzLT5tX3NhZmVCcm93c2luZ1dhcm5pbmcsIG51bGxwdHIpIHJlbW92ZUZyb21TdXBlcnZp
ZXddOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBib29sIG5hdmln
YXRlc01haW5GcmFtZSA9IFdURjo6c3dpdGNoT24ocmVzdWx0LAorICAgICAgICAgICAgW10gKENv
bnRpbnVlVW5zYWZlTG9hZCBjb250aW51ZVVuc2FmZUxvYWQpIHsgcmV0dXJuIGNvbnRpbnVlVW5z
YWZlTG9hZCA9PSBDb250aW51ZVVuc2FmZUxvYWQ6OlllczsgfSwKKyAgICAgICAgICAgIFtdIChj
b25zdCBVUkwmKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgICk7CisgICAgICAgIGlmIChuYXZp
Z2F0ZXNNYWluRnJhbWUgJiYgW3dlYWtUaGlzLT5tX3NhZmVCcm93c2luZ1dhcm5pbmcgZm9yTWFp
bkZyYW1lTmF2aWdhdGlvbl0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFtzdGQ6OmV4
Y2hhbmdlKHdlYWtUaGlzLT5tX3NhZmVCcm93c2luZ1dhcm5pbmcsIG51bGxwdHIpIHJlbW92ZUZy
b21TdXBlcnZpZXddOwogICAgIH1dKTsKICAgICBbbV92aWV3IGFkZFN1YnZpZXc6bV9zYWZlQnJv
d3NpbmdXYXJuaW5nLmdldCgpXTsKIH0KQEAgLTE2MzQsNiArMTY0MSwxMiBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpjbGVhclNhZmVCcm93c2luZ1dhcm5pCiAgICAgW3N0ZDo6ZXhjaGFuZ2UobV9zYWZl
QnJvd3NpbmdXYXJuaW5nLCBudWxscHRyKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIH0KIAordm9p
ZCBXZWJWaWV3SW1wbDo6Y2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nSWZGb3JNYWluRnJhbWVOYXZp
Z2F0aW9uKCkKK3sKKyAgICBpZiAoW21fc2FmZUJyb3dzaW5nV2FybmluZyBmb3JNYWluRnJhbWVO
YXZpZ2F0aW9uXSkKKyAgICAgICAgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCk7Cit9CisKIGJv
b2wgV2ViVmlld0ltcGw6OmlzRm9jdXNlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faW5CZWNvbWVG
aXJzdFJlc3BvbmRlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCShyZXZpc2lvbiAyMzkzMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYg
KzExNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNv
bnN0IFNhZmVCcm93c2luZ1dhcm5pbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8
V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclNh
ZmVCcm93c2luZ1dhcm5pbmdJZkZvck1haW5GcmFtZU5hdmlnYXRpb24oKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0JKHJldmlzaW9uIDIzOTMzOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg1
LDYgKzQ4NSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjbGVhclNhZmVCcm93c2luZ1dhCiAg
ICAgW21fd2ViVmlldyBfY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nXTsKIH0KIAordm9pZCBQYWdl
Q2xpZW50SW1wbDo6Y2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nSWZGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uKCkKK3sKKyAgICBbbV93ZWJWaWV3IF9jbGVhclNhZmVCcm93c2luZ1dhcm5pbmdJZkZvck1h
aW5GcmFtZU5hdmlnYXRpb25dOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGl0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkocmV2
aXNpb24gMjM5MzM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93U2FmZUJy
b3dzaW5nV2FybmluZyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBVUkw+JiYpPiYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsZWFyU2FmZUJyb3dzaW5nV2FybmluZygpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nSWZGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
KCkgb3ZlcnJpZGU7CiAgICAgCiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBib29sIHNob3dTaGFy
ZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkocmV2aXNpb24gMjM5
MzM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNiArNTAxLDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6
OmNsZWFyU2FmZUJyb3dzaW5nV2EKICAgICBtX2ltcGwtPmNsZWFyU2FmZUJyb3dzaW5nV2Fybmlu
ZygpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpjbGVhclNhZmVCcm93c2luZ1dhcm5pbmdJ
ZkZvck1haW5GcmFtZU5hdmlnYXRpb24oKQoreworICAgIG1faW1wbC0+Y2xlYXJTYWZlQnJvd3Np
bmdXYXJuaW5nSWZGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKCk7Cit9CisKIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnNldFRleHRJbmRpY2F0b3IoUmVmPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3Is
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSBsaWZldGltZSkKIHsKICAgICBt
X2ltcGwtPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvci5nZXQoKSwgbGlmZXRpbWUpOwpJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjM5Mzk2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTgtMTItMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBOYXZpZ2F0aW9ucyBhd2F5IGZyb20gdGhlIFNhZmVCcm93c2lu
ZyBpbnRlcnN0aXRpYWwgc2hvdyBhIGZsYXNoIG9mIG9sZCBjb250ZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5nLm1tOgorICAgICAgICAoc2FmZUJyb3dzaW5nVmlldyk6
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bU2FmZUJyb3dzaW5nSGVscGVyIHdlYlZpZXc6
cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorCiAyMDE4LTEyLTE5ICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgY2xpZW50cyB0byBzZXQg
dGhlIG5hdmlnYXRvciBwbGF0Zm9ybQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW0JKHJldmlzaW9uIDIzOTM1NikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5nLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yODEsMjQgKzI4MSwxNyBAQCBURVNUKFNhZmVCcm93c2luZywg
U2hvd1dhcm5pbmdTUEkpCiB9CiAKIHN0YXRpYyBWZWN0b3I8VVJMPiB1cmxzOwotc3RhdGljIGJv
b2wgZG9uZTsKIAotQGludGVyZmFjZSBTYWZlQnJvd3NpbmdIZWxwZXIgOiBOU09iamVjdDxXS05h
dmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlPgorQGludGVyZmFjZSBTYWZlQnJvd3NpbmdP
YnNlcnZlciA6IE5TT2JqZWN0CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBTYWZlQnJvd3NpbmdI
ZWxwZXIKK0BpbXBsZW1lbnRhdGlvbiBTYWZlQnJvd3NpbmdPYnNlcnZlcgogCiAtICh2b2lkKW9i
c2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2Jq
ZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWNoYW5nZSBjb250ZXh0
Oih2b2lkICopY29udGV4dAogewogICAgIHVybHMuYXBwZW5kKChOU1VSTCAqKVtjaGFuZ2Ugb2Jq
ZWN0Rm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldKTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6
KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgotewot
ICAgIGRvbmUgPSB0cnVlOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KIEBlbmQKIAog
VEVTVChTYWZlQnJvd3NpbmcsIFVSTE9ic2VydmF0aW9uKQpAQCAtMzA3LDI1ICszMDAsMjQgQEAg
VEVTVChTYWZlQnJvd3NpbmcsIFVSTE9ic2VydmF0aW9uKQogCiAgICAgUmV0YWluUHRyPE5TVVJM
PiBzaW1wbGVVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2lt
cGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHNpbXBsZTJVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0gICAgYXV0byBo
ZWxwZXIgPSBhZG9wdE5TKFtTYWZlQnJvd3NpbmdIZWxwZXIgbmV3XSk7CisgICAgYXV0byBvYnNl
cnZlciA9IGFkb3B0TlMoW1NhZmVCcm93c2luZ09ic2VydmVyIG5ld10pOwogCiAgICAgYXV0byB3
ZWJWaWV3V2l0aFdhcm5pbmcgPSBbJl0gKCkgLT4gUmV0YWluUHRyPFdLV2ViVmlldz4gewogICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Ci0gICAgICAgIFt3
ZWJWaWV3IHNldFVJRGVsZWdhdGU6aGVscGVyLmdldCgpXTsKLSAgICAgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmhlbHBlci5nZXQoKV07Ci0gICAgICAgIFt3ZWJWaWV3IGFkZE9i
c2VydmVyOmhlbHBlci5nZXQoKSBmb3JLZXlQYXRoOkAiVVJMIiBvcHRpb25zOk5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgICAgICBbd2ViVmlldyBhZGRPYnNl
cnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiVVJMIiBvcHRpb25zOk5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwogCi0gICAgICAgIFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAiPHNjcmlwdD5hbGVydCgnbG9hZGVkJyk8L3NjcmlwdD4iIGJhc2VVUkw6c2lt
cGxlVVJMLmdldCgpXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJtZWFuaW5n
ZnVsIGNvbnRlbnQgdG8gYmUgZHJhd24iIGJhc2VVUkw6c2ltcGxlVVJMLmdldCgpXTsKICAgICAg
ICAgd2hpbGUgKCFbd2ViVmlldyBfc2FmZUJyb3dzaW5nV2FybmluZ10pCiAgICAgICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogI2lmICFQTEFURk9STShNQUMpCiAg
ICAgICAgIFtbd2ViVmlldyBfc2FmZUJyb3dzaW5nV2FybmluZ10gZGlkTW92ZVRvV2luZG93XTsK
ICNlbmRpZgogICAgICAgICB2aXNpdFVuc2FmZVNpdGUoW3dlYlZpZXcgX3NhZmVCcm93c2luZ1dh
cm5pbmddKTsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoISFbd2ViVmlldyBfc2FmZUJyb3dzaW5nV2FybmluZ10pOworICAgICAg
ICB3aGlsZSAoW3dlYlZpZXcgX3NhZmVCcm93c2luZ1dhcm5pbmddKQorICAgICAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKCEh
W3dlYlZpZXcgX3NhZmVCcm93c2luZ1dhcm5pbmddKTsKIAotICAgICAgICBkb25lID0gZmFsc2U7
CiAgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIndpbmRvdy5sb2NhdGlvbj0nJUAnIiwgc2ltcGxlMlVSTC5nZXQoKV0gY29tcGxl
dGlvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgd2hpbGUgKCFbd2ViVmlldyBfc2FmZUJyb3dzaW5n
V2FybmluZ10pCiAgICAgICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgp
OwpAQCAtMzQ4LDcgKzM0MCw3IEBAIFRFU1QoU2FmZUJyb3dzaW5nLCBVUkxPYnNlcnZhdGlvbikK
ICAgICAgICAgY2hlY2tVUkxzKHsgc2ltcGxlVVJMLCBzaW1wbGUyVVJMIH0pOwogICAgICAgICBn
b0JhY2soW3dlYlZpZXcgX3NhZmVCcm93c2luZ1dhcm5pbmddKTsKICAgICAgICAgY2hlY2tVUkxz
KHsgc2ltcGxlVVJMLCBzaW1wbGUyVVJMLCBzaW1wbGVVUkwgfSk7Ci0gICAgICAgIFt3ZWJWaWV3
IHJlbW92ZU9ic2VydmVyOmhlbHBlci5nZXQoKSBmb3JLZXlQYXRoOkAiVVJMIl07CisgICAgICAg
IFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJVUkwi
XTsKICAgICB9CiAgICAgCiAgICAgdXJscy5jbGVhcigpOwpAQCAtMzU5LDcgKzM1MSw3IEBAIFRF
U1QoU2FmZUJyb3dzaW5nLCBVUkxPYnNlcnZhdGlvbikKICAgICAgICAgdmlzaXRVbnNhZmVTaXRl
KFt3ZWJWaWV3IF9zYWZlQnJvd3NpbmdXYXJuaW5nXSk7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKDUpOwogICAgICAgICBjaGVja1VSTHMoeyBzaW1wbGVVUkwsIHNp
bXBsZTJVUkwgfSk7Ci0gICAgICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOmhlbHBlci5nZXQo
KSBmb3JLZXlQYXRoOkAiVVJMIl07CisgICAgICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9i
c2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJVUkwiXTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="374613"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="374624"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>