<?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>85138</bug_id>
          
          <creation_ts>2012-04-28 09:24:54 -0700</creation_ts>
          <short_desc>Plugins are killed after 45 seconds if showing keychain &quot;Allow/Deny&quot; dialog</short_desc>
          <delta_ts>2012-10-03 16:54:42 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>All</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Rudi Sherry">rsherry</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612281</commentid>
    <comment_count>0</comment_count>
    <who name="Rudi Sherry">rsherry</who>
    <bug_when>2012-04-28 09:24:54 -0700</bug_when>
    <thetext>I&apos;m developing a mac plugin for WebKit, and on occasion it wants to use the keychain.

This might possibly bring up the keychain&apos;s Deny/Allow/Always-Allow dialog.  I&apos;ve noticed that if that is left up there for more than about 45 seconds, our plugin process is killed.  This is evidently the &quot;hang-detection&quot; timeout.

WebKit suspends the hang-timeout, allowing modal dialogs to stay up essentially forever, using a swizzled runModalForDialog: function; but the keychain dialog is actually a separate process, called within any of a very large number of low-level calls so it would be impractical to swizzle or override them.

Is there a way Safari/WebKit can detect that the plugin process is waiting for a keychain dialog and suspend the hang-timeout?

Right now I have our plug-in creating a 1x1 modal dialog around calls that could possibly show a keychain, but frankly I don&apos;t know how many calls we have that could do it or where they are (I&apos;m working with a large body of inherited code).  It would be best to detect the situation rather than try to prevent it.

I can create a plug-in that does this if needed, but will wait for comments about the feasibility of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612805</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-30 11:37:55 -0700</bug_when>
    <thetext>This sounds closely related to bug 83829.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612890</commentid>
    <comment_count>2</comment_count>
    <who name="Rudi Sherry">rsherry</who>
    <bug_when>2012-04-30 13:09:25 -0700</bug_when>
    <thetext>I don&apos;t think it&apos;s the same as bug 83829.  In that one, our plugin is calling runModalWithDialog: which (in the webkit swizzling could) should trigger the hang-timeout suspension; I don&apos;t know why it does not.

In this one, calls into the Mac OS X Security framework don&apos;t actually call runModalWithDialog.  They communicate with a special-purpose process that deals with the keychain and shows that dialog (maybe for security reasons, since it&apos;s OS code I don&apos;t know).  The plugin process is deep within the Security framework, on a mach wait.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618466</commentid>
    <comment_count>3</comment_count>
    <who name="Rudi Sherry">rsherry</who>
    <bug_when>2012-05-08 06:43:33 -0700</bug_when>
    <thetext>Radar 11404931</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734190</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-03 16:41:12 -0700</bug_when>
    <thetext>*** Bug 98325 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734191</commentid>
    <comment_count>5</comment_count>
      <attachid>166992</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-03 16:42:24 -0700</bug_when>
    <thetext>Created attachment 166992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734215</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-03 16:54:42 -0700</bug_when>
    <thetext>Committed r130347: &lt;http://trac.webkit.org/changeset/130347&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166992</attachid>
            <date>2012-10-03 16:42:24 -0700</date>
            <delta_ts>2012-10-03 16:52:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85138-20121003164135.patch</filename>
            <type>text/plain</type>
            <size>32412</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDIwNGQxNzk2MDQwYjJj
Nzc3M2UwMmIwYjdkZjc1MmE3NWQwYzc3NC4uN2I4YWZhZDQ0OTFjMTgyMGRkZGRjZGIwNjY2OGRj
MGE0ZWU3NjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY2IEBACiAyMDEyLTEwLTAzICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUGx1Z2lucyBhcmUg
a2lsbGVkIGFmdGVyIDQ1IHNlY29uZHMgaWYgc2hvd2luZyBrZXljaGFpbiAiQWxsb3cvRGVueSIg
ZGlhbG9nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTEzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTE0MDY0MzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSB3YXRjaGRvZyB0aGF0
IHdvdWxkIGtpbGwgYSBwbHVnLWluIGlmIHdlJ3ZlIGJlZW4gd2FpdGluZyBmb3IgYSBzeW5jIHJl
cGx5IGZyb20gaXQgZm9yIG1vcmUgdGhhbiA0NSBzZWNvbmRzLgorICAgICAgICBJdCdzIHVubGlr
ZWx5IHRoYXQgc29tZW9uZSBpcyBnb2luZyB0byB3YWl0IDQ1IHNlY29uZHMgZm9yIFNhZmFyaSB0
byByZWNvdmVyIGZyb20gYSBwbHVnLWluIGhhbmcsIGFuZCB0aGUgdGltZW91dCBpcworICAgICAg
ICBjYXVzaW5nIHByb2JsZW1zIHdpdGggcGx1Zy1pbnMgKHNlZSB0aGUgYnVnemlsbGEgYnVnIGZv
ciBtb3JlIGluZm9ybWF0aW9uKS4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkpOgorICAgICAgICAq
IFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ2xpZW50KToKKyAgICAg
ICAgKENvbm5lY3Rpb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5j
cHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6CisgICAgICAgIChQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6
CisgICAgICAgIChXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoK
KyAgICAgICAgKFBsdWdpblByb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAoUGx1Z2luUHJvY2Vzc1Byb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmg6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmg6CisgICAgICAgIChXZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViUHJvY2Vzcyk6CisKKzIwMTItMTAtMDMg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBUcnkgdG8g
Zml4IHRoZSBRdCBXZWJLaXQyIGZhaWx1cmVzLgogCiAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmNwcAppbmRleCBkMzRjZTk1YWJmNjU2OTk0ZTg1YWM5MjQwYmExMTdl
MTM1YjkxNjQyLi4xYzYxNWJkN2Y3NDY5OTJiMmMyZDBjM2ViNzJkZjM1MWVhMDA3OWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTIw
Myw3ICsyMDMsNiBAQCBDb25uZWN0aW9uOjpDb25uZWN0aW9uKElkZW50aWZpZXIgaWRlbnRpZmll
ciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50KiBjbGllbnQsIFJ1bgogICAgICwgbV9pbkRpc3BhdGNo
TWVzc2FnZUNvdW50KDApCiAgICAgLCBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hX
aGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KDApCiAgICAgLCBtX2RpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShmYWxzZSkKLSAgICAsIG1fZGVmYXVsdFN5bmNNZXNzYWdlVGltZW91dChOb1RpbWVv
dXQpCiAgICAgLCBtX3N5bmNNZXNzYWdlU3RhdGUoU3luY01lc3NhZ2VTdGF0ZTo6Z2V0T3JDcmVh
dGUoY2xpZW50UnVuTG9vcCkpCiAgICAgLCBtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcyh0cnVl
KQogewpAQCAtMjg0LDEzICsyODMsNiBAQCB2b2lkIENvbm5lY3Rpb246Om1hcmtDdXJyZW50bHlE
aXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpCiAgICAgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UgPSB0cnVlOwogfQogCi12b2lkIENvbm5lY3Rpb246OnNldERlZmF1bHRTeW5jTWVzc2FnZVRp
bWVvdXQoZG91YmxlIGRlZmF1bHRTeW5jTWVzc2FnZVRpbWVvdXQpCi17Ci0gICAgQVNTRVJUKGRl
ZmF1bHRTeW5jTWVzc2FnZVRpbWVvdXQgIT0gRGVmYXVsdFRpbWVvdXQpOwotCi0gICAgbV9kZWZh
dWx0U3luY01lc3NhZ2VUaW1lb3V0ID0gZGVmYXVsdFN5bmNNZXNzYWdlVGltZW91dDsKLX0KLQog
UGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdl
QXJndW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVx
dWVzdElEKQogewogICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9
IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3RpbmF0aW9uSUQpOwpAQCAtNDI3LDkgKzQxOSw2
IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3Nh
Z2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWluCiAKIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewotICAgIGlmICh0aW1lb3V0
ID09IERlZmF1bHRUaW1lb3V0KQotICAgICAgICB0aW1lb3V0ID0gbV9kZWZhdWx0U3luY01lc3Nh
Z2VUaW1lb3V0OwotCiAgICAgLy8gVXNlIGEgcmVhbGx5IGxvbmcgdGltZW91dC4KICAgICBpZiAo
dGltZW91dCA9PSBOb1RpbWVvdXQpCiAgICAgICAgIHRpbWVvdXQgPSAxZTEwOwpAQCAtNDgyLDEw
ICs0NzEsNiBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZv
clN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgICAgICAKICAgICB9CiAKLSAg
ICAvLyBXZSB0aW1lZCBvdXQuCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
c3luY01lc3NhZ2VTZW5kVGltZWRPdXQodGhpcyk7Ci0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4
YzM4ODAwNDAxM2NlODA2YjFhMWVhMWEwZDZkMjQ0ZDI4N2VhODEyLi5jYTQzOGM0MTJkMDYzZDY3
YjFkODc4ZGIyYjBkZGFhNWFiZWRiYzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtODksNyArODksNiBAQCBwdWJsaWM6CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29ubmVjdGlvbiopID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb25uZWN0aW9uKiwgTWVz
c2FnZUlEKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jTWVzc2FnZVNlbmRUaW1lZE91
dChDb25uZWN0aW9uKikgPSAwOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICB2aXJ0dWFs
IFZlY3RvcjxIV05EPiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9y
U3luY1JlcGx5KCkgPSAwOwpAQCAtMTgxLDE1ICsxODAsMTIgQEAgcHVibGljOgogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJ
bnZhbGlkKCk7CiAKLSAgICB2b2lkIHNldERlZmF1bHRTeW5jTWVzc2FnZVRpbWVvdXQoZG91Ymxl
KTsKLQogICAgIHZvaWQgcG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1
ZSgpOwogCi0gICAgc3RhdGljIGNvbnN0IGludCBEZWZhdWx0VGltZW91dCA9IDA7CiAgICAgc3Rh
dGljIGNvbnN0IGludCBOb1RpbWVvdXQgPSAtMTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgc2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNp
Z25lZCBtZXNzYWdlU2VuZEZsYWdzID0gMCk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBseSYgcmVw
bHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gRGVmYXVsdFRpbWVv
dXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHNlbmRTeW5jKGNvbnN0IFQmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFQ6OlJlcGx5
JiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQgPSBOb1RpbWVv
dXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIGRvdWJsZSB0aW1lb3V0KTsKIAogICAgIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBj
cmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5jb2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1
aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CkBAIC0zMDIsOCArMjk4LDYgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0Zv
clN5bmNSZXBseUNvdW50OwogICAgIGJvb2wgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2U7CiAK
LSAgICBkb3VibGUgbV9kZWZhdWx0U3luY01lc3NhZ2VUaW1lb3V0OwotCiAgICAgLy8gSW5jb21p
bmcgbWVzc2FnZXMuCiAgICAgTXV0ZXggbV9pbmNvbWluZ01lc3NhZ2VzTG9jazsKICAgICBEZXF1
ZTxJbmNvbWluZ01lc3NhZ2U+IG1faW5jb21pbmdNZXNzYWdlczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDFiZmZhZmU3NDJlZTg0NDA2
ZjljNGM4OGYyNTAyYTg2Y2JhMTNlMzEuLjcxMjVkN2Q4NjUzYmUwYjJiYzM5YWI5ODdhNmEwNzNl
NmZjNDNjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzLmNwcApAQCAtMTUwLDEwICsxNTAsNiBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzcwogewog
fQogCi12b2lkIFBsdWdpblByb2Nlc3M6OnN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJUEM6
OkNvbm5lY3Rpb24qKQotewotfQotCiB2b2lkIFBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVn
aW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiB7CiAgICAgQVNTRVJUKCFtX3BsdWdpbk1vZHVsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCmluZGV4IGJlMzRlOWZjZWZiNjI5YWQ0YzFhZDY1
N2NmMDQyMWQwNTU5NzNiZGQuLjY0NTE1M2NlZTFlMmYyZmVmMGM0NjdhNjY4M2ZkZDY1M2Q0N2Qx
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCkBA
IC03Nyw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25u
ZWN0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm9jZXNzTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMWQ5NWRmMWVkNjI1ZWI4NTY5NDYxZWVkMGQy
MDc4MTc5NmQ5ODkxNS4uZDJlNzU3YzliMDhlOTU3YmE1ZTBjNmQyMzcyYzg1YTI4Mjc2M2EzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKQEAgLTIzNywxMCArMjM3LDYgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVAK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9u
OjpzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKikKLXsKLX0KLQog
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwg
Ym9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCiB7
CiAgICAgT3duUHRyPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4gcGx1Z2luQ29udHJvbGxlclByb3h5
ID0gUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGUodGhpcywgY3JlYXRpb25QYXJhbWV0ZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAppbmRleCBjZTk4ZTEwMzY3OTQ1MjUxYzlmNzVmN2RiMmRlMWRiZTk0YzMyMjEwLi44
Mjk2YjU0NzBkMzBiNzkzNTdhZmQ5MGE0ZjUxYTQzODA2NDI2YjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC02Niw3
ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5kVGltZWRPdXQo
Q29yZUlQQzo6Q29ubmVjdGlvbiopOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2
b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKaW5kZXggY2MyY2VjYzg4NzQzNDdlNDRmYzMxMTM0MmY1YTM5NjM4NWY2ZDIzZC4u
MzM2YmEwZDY5MzJjN2FmYWRkYTQ2NTMxZGZiMzg1MWU3NzZlYjRmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtNzEsOSArNzEsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXItPmVu
Y29kZShzaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKTsKICAgICBlbmNvZGVyLT5l
bmNvZGUoc2hvdWxkVXNlRm9udFNtb290aGluZyk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGljb25E
YXRhYmFzZUVuYWJsZWQpOwotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICBlbmNvZGVy
LT5lbmNvZGUoZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdlVGltZW91dCk7Ci0jZW5kaWYKICAg
ICBlbmNvZGVyLT5lbmNvZGUodGVybWluYXRpb25UaW1lb3V0KTsKICAgICBlbmNvZGVyLT5lbmNv
ZGUobGFuZ3VhZ2VzKTsKICAgICBlbmNvZGVyLT5lbmNvZGUodGV4dENoZWNrZXJTdGF0ZSk7CkBA
IC0xNjAsMTAgKzE1Nyw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmljb25EYXRhYmFz
ZUVuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMuZGlzYWJsZVBsdWdpblBy
b2Nlc3NNZXNzYWdlVGltZW91dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMu
bGFuZ3VhZ2VzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDY3YWIzMzA3MDJiZDM1MmU5YmM0MDhlYjE4NzdjZGNi
MzUzODAzM2QuLmU0MzJhMTNiOTljMDFjZjg3MmRiMDI2OWMyNTY1N2Y0NDZmOTkxMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtODAsMTAgKzgwLDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogCiAgICAgYm9vbCBpY29uRGF0YWJhc2VFbmFibGVkOwogCi0jaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQotICAgIGJvb2wgZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdlVGltZW91dDsK
LSNlbmRpZgotCiAgICAgZG91YmxlIHRlcm1pbmF0aW9uVGltZW91dDsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IGxhbmd1YWdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBjZWJmNGY3YjI0NzVjMTU0
OWY3N2E2NzY2YWZjMjZmYjY3ODYxMTA5Li5mNDk3ODk1ZGI0MmQ5NzUyZWEwYjdjNGVkNTMyNDFi
Mzg2ZThhZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC03NCwxNSArNzQsNiBAQCB2b2lkIFBs
dWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8m
IHBsdWdpbiwgV2ViUGx1ZwogICAgIHBsdWdpblByb2Nlc3MtPmNsZWFyU2l0ZURhdGEod2ViUGx1
Z2luU2l0ZURhdGFNYW5hZ2VyLCBzaXRlcywgZmxhZ3MsIG1heEFnZUluU2Vjb25kcywgY2FsbGJh
Y2tJRCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblN5bmNNZXNzYWdl
U2VuZFRpbWVkT3V0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKLXsKLSAgICBQbHVnaW5Qcm9j
ZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBwbHVnaW5Qcm9jZXNzV2l0aFBhdGgocGx1Z2luUGF0
aCk7Ci0gICAgaWYgKCFwbHVnaW5Qcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwbHVn
aW5Qcm9jZXNzLT50ZXJtaW5hdGUoKTsKLX0KLQogUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2luUHJvY2Vzc2VzLnNp
emUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAppbmRleCAxOWFhZmU4NjAyMDcxNjU1ZGE0MGU1MTgw
NTYzYTFjNzc2MjA4YzVhLi4zNzgyNGM0YWEzYjRkYWIxY2IyMTM4NzA2NjlkMjU5YzA4MGQ4NmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmgKQEAgLTU2LDggKzU2LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
U2l0ZXNXaXRoRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyKiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjbGVhclNpdGVEYXRhKGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNl
Y29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBwbHVnaW5TeW5jTWVzc2Fn
ZVNlbmRUaW1lZE91dChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwotCiBwcml2YXRlOgogICAg
IFBsdWdpblByb2Nlc3NNYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IGNmZGZmOWVmYjI5
NjhhMzRmNzdkY2VhOWU4NjZmMWQ1NzUzN2I3ZjYuLmQxNzk5Njg5YjI3MGU3NmVmMWMyYzBlY2Y1
ZDUzYjM3MDYwZWZiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTg4LDEwICsxODgsNiBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOgogewogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6c3lu
Y01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopCi17Ci19Ci0KIHZvaWQg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsK
ICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGUwZmUxNWZmMDdjYjhl
YTNjYjNlNGNiOGEzM2Y1ZTkzZjkyMTBkNjguLjRiNTBlNmI4MDA2YmQ5YjJiZTQ4YWZkN2FiMWU4
NmZjYTZhN2FlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0xMDEsNyArMTAxLDYgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3Jl
SVBDOjpDb25uZWN0aW9uKik7CiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGJmMTJjY2YwZTQ2
MjA1MzczZDA3YjFmYzRiODY1MGNjOWFmMzQyYy4uMzBjMmU5NmI1OTQ3YzIzZjVlNmU5YzlkNzQ4
NTQyYWRlMjE5N2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTI0LDExICsxMjQsNiBAQCB2b2lkIFdl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiBjbwogICAgIG1fY2xpZW50LmRpZENsb3NlKHRoaXMpOwogfQogCi12b2lk
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCi17Ci0gICAgbV9wcm9jZXNzLT5zeW5jTWVzc2Fn
ZVNlbmRUaW1lZE91dChjb25uZWN0aW9uKTsKLX0KLQogI2lmIFBMQVRGT1JNKFdJTikKIFZlY3Rv
cjxIV05EPiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3aW5kb3dzVG9SZWNlaXZlU2VudE1l
c3NhZ2VzV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGY0OTYyZTI2
Y2MwMzkwNmQ1NjdmMTdiYWE2ZGZhMDExZDU5NTM4M2YuLmRhYTliOWI2NDA5MWJiNDhlMWRkYjY3
NDQxOTE3ODhhNTgzNjhmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNTIsNyArNTIsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3duUHRy
PENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCk7Ci0gICAg
dmlydHVhbCB2b2lkIHN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJUEM6OkNvbm5lY3Rpb24q
KTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBWZWN0b3I8SFdORD4gd2luZG93c1Rv
UmVjZWl2ZVNlbnRNZXNzYWdlc1doaWxlV2FpdGluZ0ZvclN5bmNSZXBseSgpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDc4OGM1
YjZmYjhiZDY5ODViOGQ2NjZkMDAwNzhiYzI3OTg2YWEwMjkuLjgxMjQwOTlhZTY5MTI1Mzg3OTk4
ZWQwNDE3NWEwMzQyOTNlNzlhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCkBAIC0zNTksMTEgKzM1OSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBh
c3NSCiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKG1fY29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsdWdpblN5bmNNZXNzYWdlU2VuZFRpbWVk
T3V0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKLXsKLSAgICBQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6c2hhcmVkKCkucGx1Z2luU3luY01lc3NhZ2VTZW5kVGltZWRPdXQocGx1Z2luUGF0aCk7Ci19
Ci0KICNlbHNlCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRHZXRTaXRlc1dpdGhQbHVnaW5E
YXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAg
LTQ4MCwxMCArNDc1LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWUKICAgICB0ZXJtaW5hdGUo
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENv
cmVJUEM6OkNvbm5lY3Rpb24qKQotewotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVj
b21lVW5yZXNwb25zaXZlKFJlc3BvbnNpdmVuZXNzVGltZXIqKQogewogICAgIFZlY3RvcjxSZWZQ
dHI8V2ViUGFnZVByb3h5PiA+IHBhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCmluZGV4IDMxYzcxODI1OGQxMjAyMjZkYTUyNzAxYWZjZjA3ZWMxMmVmMjQ5
NTMuLjcwMWRjYWJjZTQzZDYzYmRlMmU3OWI5ZmYwNjM5ZDE3YWQzOGE5MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE0Myw3ICsxNDMsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZ2V0UGx1Z2luUGF0aChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sJiBibG9ja2Vk
KTsKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4pOwotICAgIHZvaWQgcGx1Z2luU3luY01lc3NhZ2VTZW5kVGltZWRPdXQoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKTsKICNlbHNlCiAgICAgdm9pZCBkaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRh
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkaWRDbGVhclBsdWdpblNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtMTYz
LDcgKzE2Miw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6TWVzc2FnZUlEKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5kVGltZWRP
dXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFs
IFZlY3RvcjxIV05EPiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9y
U3luY1JlcGx5KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJjM2Q1OGI5MzZmNjhjNWMwOTA1MTBm
MjY4ODczNDRjNmI3ODEzNTYuLjZkZjIyY2E4NjFiNDJkZjBmOGViYzYzM2EwMzViNzE1YTdkYzNh
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzgsNyArMzgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJv
eHkgewogICAgIEdldFBsdWdpblBhdGgoV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5n
IHVybFN0cmluZykgLT4gKFdURjo6U3RyaW5nIHBsdWdpblBhdGgsIGJvb2wgYmxvY2tlZCkKICNp
ZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
V1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlv
bkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVk
Ci0gICAgUGx1Z2luU3luY01lc3NhZ2VTZW5kVGltZWRPdXQoV1RGOjpTdHJpbmcgcGx1Z2luUGF0
aCkKICNlbmRpZgogI2lmICFFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgdm9pZCBEaWRHZXRT
aXRlc1dpdGhQbHVnaW5EYXRhKFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMu
bW0KaW5kZXggNjhjOGUxMTI1NjlmZjRkMWExMDkxZDIyYTZhMjY0ZTEyMDUyMWViOC4uNDU5ZWQw
NTE5YTdkYzY4ZWVkZjQwNzUwM2JiZDY5ZWJiNzhlNTcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtMTAxLDEwICsxMDEsNiBAQCB2b2lk
IFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRm9yY2VTY3JlZW5Gb250
U3Vic3RpdHV0aW9uID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9v
bEZvcktleTpAIk5TRm9udERlZmF1bHRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCJdOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgcGFyYW1ldGVycy5kaXNh
YmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdERpc2FibGVQbHVnaW5Qcm9jZXNzTWVz
c2FnZVRpbWVvdXQiXTsKLSNlbmRpZgotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KSAmJiBIQVZFKEhPU1RFRF9DT1JFX0FOSU1BVElPTikKICNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBtYWNoX3BvcnRfdCByZW5kZXJTZXJ2ZXJQb3J0ID0g
W1tDQVJlbW90ZUxheWVyU2VydmVyIHNoYXJlZFNlcnZlcl0gc2VydmVyUG9ydF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmNwcAppbmRleCAzZmU0ZDBiNmNlZmUwZWFlNmIxZWI5NjMzODQ5MDlkZDEz
ZWMzMmM1Li5mZGI3ZTVlMWYzYjBhYWMzM2NjMmZmYjI5M2U0ZTdjMmI4YWYxODU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTQxLDM3ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gVGhlIHRpbWVvdXQsIGluIHNlY29u
ZHMsIHdoZW4gc2VuZGluZyBzeW5jIG1lc3NhZ2VzIHRvIHRoZSBwbHVnLWluLgotc3RhdGljIGNv
bnN0IGRvdWJsZSBzeW5jTWVzc2FnZVRpbWVvdXQgPSA0NTsKLQotc3RhdGljIGRvdWJsZSBkZWZh
dWx0U3luY01lc3NhZ2VUaW1lb3V0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKLXsKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGtleSB0aGlzIG9mZiBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGUg
cGF0aC4KLQotICAgIC8vIFdlIGRvbid0IHdhbnQgYSBtZXNzYWdlIHRpbWVvdXQgZm9yIHRoZSBB
cHBsZUNvbm5lY3QgcGx1Zy1pbi4KLSAgICBpZiAocGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgp
ID09ICJBcHBsZUNvbm5lY3QucGx1Z2luIikKLSAgICAgICAgcmV0dXJuIENvcmVJUEM6OkNvbm5l
Y3Rpb246Ok5vVGltZW91dDsKLQotICAgIC8vIFdlIGRvbid0IHdhbnQgYSBtZXNzYWdlIHRpbWVv
dXQgZm9yIHRoZSBNaWNyb3NvZnQgU2hhcmVQb2ludCBwbHVnLWluCi0gICAgLy8gc2luY2UgaXQg
Y2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3AgaW4gcmVzcG9uc2UgdG8gYW4gTlBOX0ludm9rZSwg
bWFraW5nIGl0IHNlZW0gbGlrZQotICAgIC8vIHRoZSBwbHVnLWluIHByb2Nlc3MgaXMgaHVuZy4g
U2VlIDxyZGFyOi8vcHJvYmxlbS85NTM2MzAzPi4KLSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBj
aGFuZ2luZyB0aGUgZGVmYXVsdCBzeW5jIG1lc3NhZ2UgdGltZW91dCwgQ29yZUlQQyBjb3VsZCBz
ZW5kIGFuCi0gICAgLy8gYXN5bmNocm9ub3VzIG1lc3NhZ2Ugd2hpY2ggdGhlIG90aGVyIHByb2Nl
c3Mgd291bGQgaGF2ZSB0byByZXBseSB0byBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgLy8gVGhp
cyB3YXkgd2UgY291bGQgY2hlY2sgaWYgdGhlIHBsdWctaW4gcHJvY2VzcyBpcyBhY3R1YWxseSBo
dW5nIG9yIG5vdC4KLSAgICBpZiAocGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpID09ICJTaGFy
ZVBvaW50QnJvd3NlclBsdWdpbi5wbHVnaW4iKQotICAgICAgICByZXR1cm4gQ29yZUlQQzo6Q29u
bmVjdGlvbjo6Tm9UaW1lb3V0OwotCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCBhIG1lc3NhZ2UgdGlt
ZW91dCBmb3IgdGhlIEJhbmtJRCBwbHVnLWluIHNpbmNlIGl0IGNhbiBzcGluIGEgbmVzdGVkCi0g
ICAgLy8gcnVuIGxvb3Agd2hlbiBpdCdzIHdhaXRpbmcgZm9yIGEgcmVwbHkgdG8gYW4gQXBwbGVF
dmVudC4KLSAgICBpZiAocGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpID09ICJQZXJzb25hbFBs
dWdpbi5idW5kbGUiKQotICAgICAgICByZXR1cm4gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1l
b3V0OwotCi0gICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLmRpc2FibGVQbHVnaW5Qcm9jZXNz
TWVzc2FnZVRpbWVvdXQoKSkKLSAgICAgICAgcmV0dXJuIENvcmVJUEM6OkNvbm5lY3Rpb246Ok5v
VGltZW91dDsKLQotICAgIHJldHVybiBzeW5jTWVzc2FnZVRpbWVvdXQ7Ci19Ci0KIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24pCiAgICAgOiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIpCiAgICAgLCBtX3BsdWdpblBhdGgocGx1Z2luUGF0aCkKQEAgLTc5
LDcgKzQ4LDYgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcioKIHsKICAgICBtX2Nvbm5lY3Rpb24g
PSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0aGlzLCBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCkpOwogCi0gICAg
bV9jb25uZWN0aW9uLT5zZXREZWZhdWx0U3luY01lc3NhZ2VUaW1lb3V0KGRlZmF1bHRTeW5jTWVz
c2FnZVRpbWVvdXQobV9wbHVnaW5QYXRoKSk7CiAgICAgbV9ucFJlbW90ZU9iamVjdE1hcCA9IE5Q
UmVtb3RlT2JqZWN0TWFwOjpjcmVhdGUobV9jb25uZWN0aW9uLmdldCgpKTsKIAogICAgIG1fY29u
bmVjdGlvbi0+b3BlbigpOwpAQCAtMTY1LDExICsxMzMsNiBAQCB2b2lkIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcgogewogfQogCi12b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzeW5jTWVzc2FnZVNl
bmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKikKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UGx1Z2lu
U3luY01lc3NhZ2VTZW5kVGltZWRPdXQobV9wbHVnaW5QYXRoKSwgMCk7Ci19Ci0KIHZvaWQgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNldEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGV4Y2VwdGlv
blN0cmluZykKIHsKICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OnNldEdsb2JhbEV4Y2VwdGlvbihl
eGNlcHRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBiYzg2NmQxMGM1Mzhl
NzhiYTlkZjk2MzY3MjliM2UxNzAzZTI0NmM0Li5iOWJmODFjNzE2NmQ2NzA5YWMwODhjZjg0Yzdk
Yjk5YTUyNTAwOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjgsNyArNjgsNiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiwgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCk7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJUEM6OkNv
bm5lY3Rpb24qKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCmluZGV4IDVlNzk1NWQ2NzYx
OTAxZGVkYjdjMmRjYzY3NGQwZmIzOWYyNjdjNzcuLjZlNmUyNDQ2MWFmZDgxZGUxNThiODgxYTNj
OTAzNzJhYzliMTE0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHAKQEAgLTEwMiwxMSArMTAyLDYgQEAgdm9pZCBX
ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiBjb24KICAgICBtX3Byb2Nlc3MtPmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQpOwogfQogCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1VJUHJv
Y2Vzczo6c3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbikKLXsKLSAgICBtX3Byb2Nlc3MtPnN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KGNvbm5lY3Rp
b24pOwotfQotCiAjaWYgUExBVEZPUk0oV0lOKQogVmVjdG9yPEhXTkQ+IFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzczo6d2luZG93c1RvUmVjZWl2ZVNlbnRNZXNzYWdlc1doaWxlV2FpdGluZ0ZvclN5
bmNSZXBseSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
bm5lY3Rpb25Ub1VJUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MuaAppbmRleCA0MmI5Y2Q3MTZiMTI0NzMwZTJkODAwYWRjNTE0YzUw
ODQyZTUwMzFmLi45ZjIxMDhjNTc1ZDE2NmI5ZGU0ZDAyYWY1MDlhNjY4NDdjMWFlMTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzLmgKQEAgLTUyLDcgKzUyLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jTWVzc2Fn
ZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIHZpcnR1YWwgVmVjdG9yPEhXTkQ+IHdpbmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNXaGls
ZVdhaXRpbmdGb3JTeW5jUmVwbHkoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDRkYmVlZDU3YzAxY2I2Yjg3Mzc3ODY1ZDlmZDMwZTg3ZGRjMmM5ZTcuLjFiNzg4NzJjNGQw
NzA2Y2Y2N2M3NmIyM2QyNzY2N2RkNmJjYjEwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBhbGVydFRleHQpCiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRBbGVydChtX3BhZ2UsIGFs
ZXJ0VGV4dCwgd2ViRnJhbWUpOwogCiAgICAgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSA/IENvcmVJUEM6OlNw
aW5SdW5Mb29wV2hpbGVXYWl0aW5nRm9yUmVwbHkgOiAwOwotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2
YVNjcmlwdEFsZXJ0KHdlYkZyYW1lLT5mcmFtZUlEKCksIGFsZXJ0VGV4dCksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6UmVwbHkoKSwgbV9wYWdlLT5wYWdlSUQo
KSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6RGVmYXVsdFRpbWVvdXQsIHN5bmNTZW5kRmxhZ3MpOwor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0KHdlYkZyYW1lLT5mcmFtZUlEKCksIGFs
ZXJ0VGV4dCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6UmVw
bHkoKSwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0LCBz
eW5jU2VuZEZsYWdzKTsKIH0KIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRD
b25maXJtKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMzI2LDcgKzMy
Niw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSog
ZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIHVuc2lnbmVkIHN5bmNTZW5kRmxh
Z3MgPSAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkgPyBD
b3JlSVBDOjpTcGluUnVuTG9vcFdoaWxlV2FpdGluZ0ZvclJlcGx5IDogMDsKICAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybSh3
ZWJGcmFtZS0+ZnJhbWVJRCgpLCBtZXNzYWdlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVu
SmF2YVNjcmlwdENvbmZpcm06OlJlcGx5KHJlc3VsdCksIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJ
UEM6OkNvbm5lY3Rpb246OkRlZmF1bHRUaW1lb3V0LCBzeW5jU2VuZEZsYWdzKSkKKyAgICBpZiAo
IVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm0od2ViRnJhbWUtPmZyYW1lSUQoKSwgbWVz
c2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpSZXBs
eShyZXN1bHQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1RpbWVv
dXQsIHN5bmNTZW5kRmxhZ3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMzQwLDcgKzM0MCw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZh
U2NyaXB0UHJvbXB0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjCiAgICAg
bV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQo
bV9wYWdlLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIHdlYkZyYW1lKTsKIAogICAgIHVuc2lnbmVk
IHN5bmNTZW5kRmxhZ3MgPSAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVu
YWJsZWQoKSkgPyBDb3JlSVBDOjpTcGluUnVuTG9vcFdoaWxlV2FpdGluZ0ZvclJlcGx5IDogMDsK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdCh3ZWJGcmFtZS0+ZnJhbWVJ
RCgpLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5K
YXZhU2NyaXB0UHJvbXB0OjpSZXBseShyZXN1bHQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBD
OjpDb25uZWN0aW9uOjpEZWZhdWx0VGltZW91dCwgc3luY1NlbmRGbGFncykpCisgICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQod2ViRnJhbWUtPmZyYW1lSUQoKSwgbWVzc2Fn
ZSwgZGVmYXVsdFZhbHVlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFBy
b21wdDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Tm9UaW1lb3V0LCBzeW5jU2VuZEZsYWdzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuICFyZXN1bHQuaXNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCA1NjA2NmQ1ODkxYjdhYzM1NDUwNWEwNTYyOTMyMThjMmM1ZDZlODU0
Li43YzAzNmQ0MjE2MzA4NTllYTY2MDExYjhmZjE0NDk3N2I1MTM2NzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1OSw5ICsxNTksNiBAQCBXZWJQcm9j
ZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fbm90aWZpY2F0aW9uTWFuYWdlcih0aGlzKQogI2Vu
ZGlmCiAgICAgLCBtX2ljb25EYXRhYmFzZVByb3h5KHRoaXMpCi0jaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQotICAgICwgbV9kaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0KGZhbHNl
KQotI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgLCBtX3NvdXBSZXF1ZXN0TWFuYWdlcih0aGlz
KQogI2VuZGlmCkBAIC0yNjMsMTAgKzI2MCw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIG1fZGlzYWJsZVBsdWdp
blByb2Nlc3NNZXNzYWdlVGltZW91dCA9IHBhcmFtZXRlcnMuZGlzYWJsZVBsdWdpblByb2Nlc3NN
ZXNzYWdlVGltZW91dDsKLSNlbmRpZgotCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFt
ZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKIH0KIApAQCAtNzYxLDEwICs3NTQsNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZQogICAgIC8vIHdlJ2xsIGxldCBpdCBzbGlkZS4KIH0KIAotdm9p
ZCBXZWJQcm9jZXNzOjpzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9u
KikKLXsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNz
YWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgYm9v
bCYgZGlkSGFuZGxlTWVzc2FnZSkKIHsKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1l
c3NhZ2VDbGFzc1dlYlByb2Nlc3M+KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggZTM0ZDE1ZjI5NjAxOGE1ZjdkMDEwM2JjZjY4YWY1MzY5MDUxMjk3Ni4uMzJk
M2MwOTYwY2E4MGQ0OWRmOGNkNTVhNjk0Mzc0OTQ0NTMxNDZmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE4Miw3ICsxODIsNiBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
JiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKSB7IHJldHVybiBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcjsgfQotICAgIGJvb2wgZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNz
YWdlVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdl
VGltZW91dDsgfQogI2VuZGlmCiAKICAgICBFdmVudERpc3BhdGNoZXImIGV2ZW50RGlzcGF0Y2hl
cigpIHsgcmV0dXJuIG1fZXZlbnREaXNwYXRjaGVyOyB9CkBAIC0yNjYsNyArMjY1LDYgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcios
IE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQp
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25u
ZWN0aW9uKik7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgVmVjdG9yPEhXTkQ+IHdp
bmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkoKTsKICNl
bmRpZgpAQCAtMzM5LDcgKzMzNyw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIG1fcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyOwotICAgIGJvb2wgbV9kaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3Nh
Z2VUaW1lb3V0OwogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkK
</data>
<flag name="review"
          id="179526"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>