<?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>132180</bug_id>
          
          <creation_ts>2014-04-25 03:53:28 -0700</creation_ts>
          <short_desc>[GTK] Implement iframe shim technique for windowed plugins in WebKit2</short_desc>
          <delta_ts>2022-06-28 03:49:25 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>aperez</cc>
    
    <cc>beidson</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jane.xia2009</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1004035</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-25 03:53:28 -0700</bug_when>
    <thetext>It allows to show iframes on top of a windowed plugin. This is covered by layout test plugins/iframe-shims.html that for some reason works when run with WTR. It seems than the fake mouse events used by WTR reach the buttons that are hidden. This doesn&apos;t happen when running the test manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004046</commentid>
    <comment_count>1</comment_count>
      <attachid>230162</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-25 04:17:04 -0700</bug_when>
    <thetext>Created attachment 230162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004059</commentid>
    <comment_count>2</comment_count>
      <attachid>230170</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-25 05:12:40 -0700</bug_when>
    <thetext>Created attachment 230170
Try to fix mac and EFL builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004091</commentid>
    <comment_count>3</comment_count>
      <attachid>230170</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-04-25 07:38:14 -0700</bug_when>
    <thetext>Comment on attachment 230170
Try to fix mac and EFL builds

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

GTK+ bits look good to me.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:1027
&gt; +static bool iframeIsAbovePlugin(const Vector&lt;const RenderObject*&gt;&amp; iframeZIndexStack, const Vector&lt;const RenderObject*&gt;&amp; pluginZIndexStack)
&gt; +{
&gt; +    for (size_t i = 0; i &lt; iframeZIndexStack.size() &amp;&amp; i &lt; pluginZIndexStack.size(); ++i) {
&gt; +        // The root is at the end of these stacks. We want to iterate root-downwards so we index backwards from the end.
&gt; +        const RenderObject* iframeStackRootObject = iframeZIndexStack[iframeZIndexStack.size() - 1 - i];
&gt; +        const RenderObject* pluginStackRootObject = pluginZIndexStack[pluginZIndexStack.size() - 1 - i];

This requires preserving the original copyright, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004507</commentid>
    <comment_count>4</comment_count>
      <attachid>230285</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-28 01:37:10 -0700</bug_when>
    <thetext>Created attachment 230285
Address review comments and try to fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092932</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-07 18:06:57 -0700</bug_when>
    <thetext>*** Bug 68969 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174558</commentid>
    <comment_count>6</comment_count>
      <attachid>230285</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-14 11:26:25 -0700</bug_when>
    <thetext>Comment on attachment 230285
Address review comments and try to fix mac build

Marking as r- due to the age of the patch. Could you please update your code against the current source tree and resubmit for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176136</commentid>
    <comment_count>7</comment_count>
      <attachid>274403</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-03-18 04:11:50 -0700</bug_when>
    <thetext>Created attachment 274403
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176137</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-18 04:13:04 -0700</bug_when>
    <thetext>Attachment 274403 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:784:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:786:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp:303:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp:305:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 4 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176142</commentid>
    <comment_count>9</comment_count>
      <attachid>274405</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-03-18 04:18:22 -0700</bug_when>
    <thetext>Created attachment 274405
Fox coding style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176143</commentid>
    <comment_count>10</comment_count>
      <attachid>274406</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-03-18 04:41:29 -0700</bug_when>
    <thetext>Created attachment 274406
Try to fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176145</commentid>
    <comment_count>11</comment_count>
      <attachid>274407</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-03-18 04:53:44 -0700</bug_when>
    <thetext>Created attachment 274407
Try to fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176201</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-03-18 10:11:03 -0700</bug_when>
    <thetext>Can we use a region instead of a list of vectors for occlusions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176684</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-03-21 01:09:25 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Can we use a region instead of a list of vectors for occlusions?

Yes, indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176685</commentid>
    <comment_count>14</comment_count>
      <attachid>274576</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-03-21 01:10:07 -0700</bug_when>
    <thetext>Created attachment 274576
Updated patch to use Region for occlusions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182443</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-08 23:50:27 -0700</bug_when>
    <thetext>Any other concern about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207610</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-04 00:48:08 -0700</bug_when>
    <thetext>Ping reviewers? This is more than 2 years old now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340429</commentid>
    <comment_count>17</comment_count>
      <attachid>274576</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-19 16:01:10 -0700</bug_when>
    <thetext>Comment on attachment 274576
Updated patch to use Region for occlusions

r-, as this has been pending review for over a year now. It is near-impossible that this patch still applies to trunk and unlikely to still be relevant in its current form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1878738</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-06-28 03:48:49 -0700</bug_when>
    <thetext>Support for plugins was removed in https://trac.webkit.org/changeset/265753/webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1878739</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-06-28 03:49:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/96050650&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230162</attachid>
            <date>2014-04-25 04:17:04 -0700</date>
            <delta_ts>2014-04-25 05:12:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-iframe-shim.diff</filename>
            <type>text/plain</type>
            <size>31781</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MTk3NTE1Li45ZTBlZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzAg
QEAKIDIwMTQtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdp
bmRvd2VkIHBsdWdpbnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSXQgYWxsb3dzIHRvIHNob3cgaWZyYW1lcyBvbiB0b3Agb2YgYSB3
aW5kb3dlZCBwbHVnaW4uIFRoZQorICAgICAgICBpbXBsZW1lbnRhdG9uIGlzIGJhc2VkIG9uIGNo
cm9taXVtIG9uZSwgaXQgY2hlY2tzIHRoZSBhcmVhcyBvZiB0aGUKKyAgICAgICAgd2luZG93ZWQg
cGx1Z2lucyB0aGF0IGFyZSBvY2NsdWRlZCBieSBhbiBpZnJhbWUuIFRoZSBvY2NsdXNpb24KKyAg
ICAgICAgcmVjdGFuZ2xlcyBhcmUgc2VudCB0byB0aGUgVUkgcHJvY2VzcyB0byBwcm9wZXJseSBt
YXNrIHRoZSBwbHVnaW4KKyAgICAgICAgY29udGFpbmVyIHdpbmRvdy4KKyAgICAgICAgVGhpcyBp
cyBjb3ZlcmVkIGJ5IHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwuCisKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBBZGQgb2NjbHVzaW9ucyBw
YXJhbWV0ZXIuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2Vi
UGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dl
ZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogU3Vic3RyYWN0CisgICAgICAgIHRoZSBvY2NsdXNp
b24gcmVjdGFuZ2xlcyBmcm9tIHRoZSBwbHVnaW4gY29udGFpbmVyIHdpbmRvdyBjbGlwIHJlZ2lv
bi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6aXNXaW5kb3dlZCk6IFJldHVy
biB3aGV0aGVyIHRoZSBwbHVnaW4gaXMKKyAgICAgICAgd2luZG93ZWQgb3Igbm90LgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBTYXZlIHRoZSBw
YXNzZWQgaW4gb2NjbHVzaW9ucy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UpOiBQYXNzIGFsc28gdGhlCisgICAgICAg
IG9jY2x1c2lvbnMgdG8gdGhlIGNvbnRyb2xsZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDogQWRkIGlzV2luZG93ZWQoKSBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgbWV0
aG9kIGFuZAorICAgICAgICBvY2NsdXNpb25zIHBhcmFtZXRlciB0byBnZW9tZXRyeURpZENoYW5n
ZSgpLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6IEFk
ZCBvY2NsdXNpb25zIHBhcmFtZXRlcgorICAgICAgICB0byBnZW9tZXRyeURpZENoYW5nZSgpLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6IEluaXRpYWxpemUgbV9pc1dpbmRvd2Vk
IHRvIGZhbHNlLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aXNXaW5kb3dlZCk6IFJl
dHVybiB3aGV0aGVyIHRoZSBwbHVnaW4gaXMKKyAgICAgICAgd2luZG93ZWQgb3Igbm90LgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBTYXZlIHRoZSBw
YXNzZWQgaW4gb2NjbHVzaW9ucy4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmNyZWF0
ZVBsdWdpbkNvbnRhaW5lcik6IFNldCBtX2lzV2luZG93ZWQgdG8KKyAgICAgICAgdHJ1ZSBpZiBh
IHBsdWdpbiBjb250YWluZXIgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBQYXNzIHRoZQorICAg
ICAgICBvY2NsdXNpb25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5tZXNzYWdlcy5pbjogQWRkIG9jY2x1c2lvbnMKKyAgICAgICAgcGFyYW1ldGVyIHRv
IFdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UgbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlmcmFtZUlz
QWJvdmVQbHVnaW4pOiBIZWxwZXIgc3RhdGljIGZ1bmN0aW9uIHRvIGNoZWNrIGlmCisgICAgICAg
IHRoZSBpZnJhbWUgaXMgYWJvdmUgdGhlIHBsdWdpbi4KKyAgICAgICAgKFdlYktpdDo6ZnJhbWVW
aWV3T3duZXJJRnJhbWVSZW5kZXJlcik6IFJldHVybiB0aGUgb3duZXIgZWxlbWVudAorICAgICAg
ICByZW5kZXJlciBvZiB0aGUgZ2l2ZW4gRnJhbWVWaWV3IGlmIGl0J3MgYW4gaWZyYW1lLgorICAg
ICAgICAoV2ViS2l0OjpidWlsZFpJbmRleFN0YWNrKTogSGVscGVyIGZ1bmN0aW9uIHRvIGJ1aWxk
IHRoZSByZW5kZXIKKyAgICAgICAgc3RhY2sgb2YgYSBnaXZlbiByZW5kZXJlci4KKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6Z2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMpOiBSZXR1cm5z
IHRoZSBzZXQKKyAgICAgICAgb2YgYXJlYXMgb2YgdGhlIHBsdWdpbiB0aGF0IGFyZSBvY2NsdWRl
ZCBieSBhbiBpZnJhbWUuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnZpZXdHZW9tZXRy
eURpZENoYW5nZSk6IENhbGwKKyAgICAgICAgZ2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMoKSBm
b3Igd2luZG93ZWQgcGx1Z2lucyBhbmQgcGFzcyB0aGUKKyAgICAgICAgb2NjbHVzaW9ucyB0byB0
aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKTogQWRkCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisKKzIwMTQtMDQtMjUgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtd
IFBsdWdpbiBwcm9jZXNzIGNyYXNoZXMgd2l0aCBHVEsyIHdpbmRvd2VkIHBsdWdpbnMKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjEyNwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKaW5kZXggM2RlZDdkOS4uYTcyNjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDA0LDcgKzQw
NCw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpmcmFtZURpZEZhaWwodWludDY0X3Qg
cmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkKICAgICBtX3BsdWdpbi0+ZnJhbWVEaWRGYWls
KHJlcXVlc3RJRCwgd2FzQ2FuY2VsbGVkKTsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJv
eHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0sIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50
UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCBmbG9hdCBjb250ZW50
c1NjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYmFja2luZ1N0b3Jl
SGFuZGxlKQogewogICAgIEFTU0VSVChtX3BsdWdpbik7CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSQogICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZUhhbmRsZSk7CiAgICAgfQogCi0gICAgbV9wbHVn
aW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHBsdWdpblNpemUsIGNsaXBSZWN0LCBwbHVnaW5Ub1Jvb3RW
aWV3VHJhbnNmb3JtKTsKKyAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2UocGx1Z2luU2l6
ZSwgY2xpcFJlY3QsIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIG9jY2x1c2lvbnMpOwogfQog
CiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCkBAIC02MDUsOSArNjA1LDkgQEAg
dWludDY0X3QgUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIoKQog
ICAgIHJldHVybiB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBj
b25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8SW50
UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewotICAgIG1fY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6V2luZG93ZWRQbHVn
aW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1l
UmVjdCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lEKSwgbV9wbHVnaW5JbnN0YW5jZUlE
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCA2NWQ5MDJiLi4zM2E2NjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgK
QEAgLTExNSwxMyArMTE1LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVj
dFBsdWdpbkZyb21EZXN0cnVjdGlvbigpOwogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQog
ICAgIHZpcnR1YWwgdWludDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0
X3Qgd2luZG93SUQpOworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVz
aW9ucywgdWludDY0X3Qgd2luZG93SUQpOwogI2VuZGlmCiAgICAgCiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycy4KICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0
SUQpOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXND
YW5jZWxsZWQpOwotICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgZmxv
YXQgY29udGVudHNTY2FsZUZhY3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJh
Y2tpbmdTdG9yZUhhbmRsZSk7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVj
dCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIGZsb2F0IGNv
bnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5n
U3RvcmVIYW5kbGUpOwogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3Ry
aW5nLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7CiAgICAgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNmI2YTMwOC4u
MzRlZWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAK
IAogbWVzc2FnZXMgLT4gUGx1Z2luQ29udHJvbGxlclByb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAg
ICAjIFNlbnQgd2hlbiB0aGUgcGx1Zy1pbiBnZW9tZXRyeSBjaGFuZ2VzLgotICAgIEdlb21ldHJ5
RGlkQ2hhbmdlKFdlYkNvcmU6OkludFNpemUgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBj
bGlwUmVjdCwgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zv
cm0sIGZsb2F0IHNjYWxlRmFjdG9yLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJh
Y2tpbmdTdG9yZUhhbmRsZSkKKyAgICBHZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRTaXpl
IHBsdWdpblNpemUsIFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3QsIFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4gb2NjbHVzaW9ucywgZmxvYXQgc2NhbGVGYWN0b3IsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgYmFja2luZ1N0b3JlSGFuZGxlKQogCiAgICAgIyBTZW50IHdoZW4gYSBmcmFtZSBo
YXMgZmluaXNoZWQgbG9hZGluZy4KICAgICBGcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qg
cmVxdWVzdElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDMw
MzFjMGUuLjBjMmNmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTEzODEsNyArMTM4MSw3IEBAIHByaXZhdGU6CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJF
KFgxMSkKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQp
OwotICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1
aW50NjRfdCB3aW5kb3dJRCk7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9u
cywgdWludDY0X3Qgd2luZG93SUQpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NOZXh0UXVl
dWVkV2hlZWxFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzEyOWJlMi4uYTViZDQ2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMTMsNyAr
MzEzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTFVHSU5fQVJDSElURUNU
VVJFKFgxMSkKICAgICAjIFgxMSB3aW5kb3dlZCBwbHVnaW4gbWVzc2FnZXMKICAgICBDcmVhdGVQ
bHVnaW5Db250YWluZXIoKSAtPiAodWludDY0X3Qgd2luZG93SUQpCi0gICAgV2luZG93ZWRQbHVn
aW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6
SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCisgICAgV2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50
UmVjdCBjbGlwUmVjdCwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnMsIHVpbnQ2
NF90IHdpbmRvd0lEKQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggOGE1Mzk4NS4u
YTUwOTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVQ
bHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQogICAgIHBsdWdpbldpbmRvd01hcCgp
LnNldCh3aW5kb3dJRCwgc29ja2V0KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2Vk
UGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit2
b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90
IHdpbmRvd0lEKQogewogICAgIEd0a1dpZGdldCogcGx1Z2luID0gcGx1Z2luV2luZG93TWFwKCku
Z2V0KHdpbmRvd0lEKTsKICAgICBpZiAoIXBsdWdpbikKQEAgLTExMSw2ICsxMTEsMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWUKICAgICBpZiAoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQocGx1
Z2luKSkgewogICAgICAgICBHZGtSZWN0YW5nbGUgY2xpcCA9IGNsaXBSZWN0OwogICAgICAgICBj
YWlyb19yZWdpb25fdCogY2xpcFJlZ2lvbiA9IGNhaXJvX3JlZ2lvbl9jcmVhdGVfcmVjdGFuZ2xl
KCZjbGlwKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogb2NjbHVzaW9ucykgewor
ICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIG9jY2x1c2lvbiA9IHJlY3Q7CisgICAgICAgICAgICBj
YWlyb19yZWdpb25fc3VidHJhY3RfcmVjdGFuZ2xlKGNsaXBSZWdpb24sICZvY2NsdXNpb24pOwor
ICAgICAgICB9CiAgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29tYmluZV9yZWdpb24oZ3RrX3dp
ZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAsIDApOwogICAgICAgICBjYWly
b19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAppbmRleCBlOWM2ODY2Li4yZTExM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTcyNCwxNiArNzI0LDIxIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OmlzVHJhbnNwYXJlbnQo
KQogICAgIHJldHVybiBtX2lzVHJhbnNwYXJlbnQ7CiB9CiAKK2Jvb2wgTmV0c2NhcGVQbHVnaW46
OmlzV2luZG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzV2luZG93ZWQ7Cit9CisKIGJv
b2wgTmV0c2NhcGVQbHVnaW46OndhbnRzV2hlZWxFdmVudHMoKQogewogICAgIHJldHVybiBtX3Bs
dWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpXYW50c1do
ZWVsRXZlbnRzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkKK3ZvaWQgTmV0c2Nh
cGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKIHsKICAg
ICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogCi0gICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5T
aXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtID09IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAocGx1Z2luU2l6ZSA9
PSBtX3BsdWdpblNpemUgJiYgbV9jbGlwUmVjdCA9PSBjbGlwUmVjdCAmJiBtX3BsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSAmJiBtX29jY2x1c2lv
bnMgPT0gb2NjbHVzaW9ucykgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNzQ3LDYgKzc1Miw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46Omdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3Qm
CiAgICAgbV9wbHVnaW5TaXplID0gcGx1Z2luU2l6ZTsKICAgICBtX2NsaXBSZWN0ID0gY2xpcFJl
Y3Q7CiAgICAgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybTsKKyAgICBtX29jY2x1c2lvbnMgPSBvY2NsdXNpb25zOwogCiAgICAgSW50UG9pbnQg
ZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtLm1hcFBvaW50KEludFBvaW50KCkpOwogICAgIG1fZnJhbWVSZWN0SW5XaW5kb3dD
b29yZGluYXRlcyA9IEludFJlY3QoZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
LCBtX3BsdWdpblNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBhZDI3NjdkLi5jNmY4
Y2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTg0LDggKzE4NCw5IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpOwogI2VuZGlmCiAgICAg
dmlydHVhbCBib29sIGlzVHJhbnNwYXJlbnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dl
ZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0
LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zv
cm0pOworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpOwogICAgIHZpcnR1YWwg
dm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURp
ZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CkBAIC0yOTIsNiAr
MjkzLDggQEAgcHJpdmF0ZToKICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0IGNhbiBiZSB1c2VkIHRv
IGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1pbiBjb29yZGluYXRl
cy4KICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtOwogCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fb2NjbHVzaW9uczsKKwogICAg
IC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoZXNlLgogICAgIFdlYkNvcmU6OkludFJlY3QgbV9mcmFt
ZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwCmluZGV4IGRiNGJmMjQuLmVjNmFkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAg
ICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1
Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsK
ICNlbmRpZgotICAgICAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UobV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBtX2NsaXBSZWN0LCB3aW5kb3dJ
RCk7CisgICAgICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShtX2ZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIG1fY2xpcFJlY3QsIG1fb2NjbHVzaW9u
cywgd2luZG93SUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA2YTdlOWIwLi5j
NzRkMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmgKQEAgLTExNSw2ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBpc1RyYW5zcGFyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5k
ZXggYzU0YTRhMS4uMTNkOTg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaApAQCAtMTM0LDEyICsxMzQsMTUgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMg
d2hldGhlciB0aGUgcGx1Zy1pbiBpcyB0cmFuc3BhcmVudCBvciBub3QuCiAgICAgdmlydHVhbCBi
b29sIGlzVHJhbnNwYXJlbnQoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBs
dWctaW4gaXMgd2luZG93ZWQgb3Igbm90LgorICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd2VkKCkg
Y29uc3QgPSAwOworCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHdlIHNob3VsZCBzZW5kIHdoZWVs
IGV2ZW50cyB0byB0aGlzIHBsdWctaW4uCiAgICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVu
dHMoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGl0cyBnZW9tZXRyeSBo
YXMgY2hhbmdlZC4gVGhlIGNsaXAgcmVjdCBpcyBpbiBwbHVnLWluIGNvb3JkaW5hdGVzLCBhbmQg
dGhlIGFmZmluZSB0cmFuc2Zvcm0gY2FuIGJlIHVzZWQKICAgICAvLyB0byBjb252ZXJ0IGZyb20g
cm9vdCB2aWV3IGNvb3JkaW5hdGVzIHRvIHBsdWctaW4gY29vcmRpbmF0ZXMuCi0gICAgdmlydHVh
bCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNp
emUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1p
biB0aGF0IGl0IGhhcyBiZWVuIGV4cGxpY2l0bHkgaGlkZGVuIG9yIHNob3duLiAoTm90ZSB0aGF0
IHRoaXMgaXMgbm90IGNhbGxlZCB3aGVuIHRoZSBwbHVnLWluIGJlY29tZXMgb2JzY3VyZWQgZnJv
bSB2aWV3IG9uIHNjcmVlbi4pCiAgICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2Uo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkNvbnRyb2xsZXIuaAppbmRleCA3OWNjYTU5Li42ZWEwNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwdWJsaWM6CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgLy8g
Q3JlYXRlIGEgcGx1Z2luIGNvbnRhaW5lciBmb3Igd2luZG93ZWQgcGx1Z2lucwogICAgIHZpcnR1
YWwgdWludDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdp
bmRvd0lEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNp
b25zLCB1aW50NjRfdCB3aW5kb3dJRCkgPSAwOwogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgd2hl
biB0aGUgYSBwbHVnLWluIGluc3RhbmNlIGlzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCwgZWl0
aGVyIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCA3ZDljMzY4Ni4uOWNl
Yjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwCkBAIC03MSw2ICs3MSw3IEBAIFBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSh1aW50
NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQogICAgICwg
bV9yZW1vdGVMYXllckNsaWVudElEKDApCiAgICAgLCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0lu
aXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9pc1Jlc3RhcnRlZFByb2Nlc3MoaXNSZXN0YXJ0
ZWRQcm9jZXNzKQorICAgICwgbV9pc1dpbmRvd2VkKGZhbHNlKQogewogfQogCkBAIC0yNTcsNiAr
MjU4LDExIEBAIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorYm9vbCBQbHVnaW5Qcm94eTo6aXNXaW5kb3dlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faXNXaW5kb3dlZDsKK30KKwogYm9vbCBQbHVnaW5Qcm94eTo6d2FudHNXaGVlbEV2
ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fd2FudHNXaGVlbEV2ZW50czsKQEAgLTI4MywxMiArMjg5
LDEyIEBAIHZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgbV9w
bHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YSA9IGZhbHNlOwogICAgIH0KIAotICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9s
bGVyUHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9w
bHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdpbkJh
Y2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Okdlb21ldHJ5RGlk
Q2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtLCBtX29jY2x1c2lvbnMsIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgcGx1Z2luQmFja2luZ1N0
b3JlSGFuZGxlKSwgbV9wbHVnaW5JbnN0YW5jZUlELCBJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pCit2
b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5T
aXplLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVn
aW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9j
Y2x1c2lvbnMpCiB7Ci0gICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5TaXplICYmIG1fY2xp
cFJlY3QgPT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID09IHBsdWdp
blRvUm9vdFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAocGx1Z2luU2l6ZSA9PSBtX3BsdWdpblNp
emUgJiYgbV9jbGlwUmVjdCA9PSBjbGlwUmVjdCAmJiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zv
cm0gPT0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSAmJiBtX29jY2x1c2lvbnMgPT0gb2NjbHVz
aW9ucykgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMjk2LDYgKzMwMiw3IEBAIHZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdl
KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsCiAgICAgbV9wbHVn
aW5TaXplID0gcGx1Z2luU2l6ZTsKICAgICBtX2NsaXBSZWN0ID0gY2xpcFJlY3Q7CiAgICAgbV9w
bHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybTsKKyAg
ICBtX29jY2x1c2lvbnMgPSBvY2NsdXNpb25zOwogCiAgICAgZ2VvbWV0cnlEaWRDaGFuZ2UoKTsK
IH0KQEAgLTY3NCwxMSArNjgxLDEyIEBAIHZvaWQgUGx1Z2luUHJveHk6OnNldFN0YXR1c2JhclRl
eHQoY29uc3QgU3RyaW5nJiBzdGF0dXNiYXJUZXh0KQogdm9pZCBQbHVnaW5Qcm94eTo6Y3JlYXRl
UGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKIHsKICAgICB3aW5kb3dJRCA9IGNv
bnRyb2xsZXIoKS0+Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7CisgICAgbV9pc1dpbmRvd2VkID0g
d2luZG93SUQ7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit2b2lkIFBsdWdpblByb3h5
Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3Rv
cjxJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpCiB7Ci0gICAgY29udHJv
bGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJl
Y3QsIHdpbmRvd0lEKTsKKyAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgb2NjbHVzaW9ucywgd2luZG93SUQpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmgKaW5kZXggNDkzN2U1Zi4uYTFmNjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTgyLDggKzgyLDkgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCk7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIGJvb2wgaXNUcmFuc3BhcmVudCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd2Vk
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bSk7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25z
dCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucyk7CiAgICAgdmlydHVhbCB2
b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEaWRGaW5p
c2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlk
RmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKQEAgLTE3MCw3ICsx
NzEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAg
ICAgdm9pZCBjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKTsKLSAgICB2
b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qg
d2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2
NF90IHdpbmRvd0lEKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Jbml0aWFsaXplQXN5bmNocm9u
b3VzbHkoKSBjb25zdDsKQEAgLTE5NCw2ICsxOTUsOCBAQCBwcml2YXRlOgogICAgIC8vIEEgdHJh
bnNmb3JtIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29udmVydCBmcm9tIHJvb3QgdmlldyBjb29yZGlu
YXRlcyB0byBwbHVnLWluIGNvb3JkaW5hdGVzLgogICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07CiAKKyAgICBWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4gbV9vY2NsdXNpb25zOworCiAgICAgLy8gVGhpcyBpcyB0aGUgYmFja2luZyBzdG9yZSB0
aGF0IHdlIHBhaW50IHdoZW4gd2UncmUgdG9sZCB0byBwYWludC4KICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBtX2JhY2tpbmdTdG9yZTsKIApAQCAtMjIzLDYgKzIyNiw4IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFByb2Nlc3M7CisKKyAgICBib29sIG1f
aXNXaW5kb3dlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDQxN2UxN2UuLmRjMGRlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KQEAgLTcyLDcgKzcy
LDcgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIENyZWF0
ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJRCkKIAogICAgICMgVXBkYXRl
IGdlb21ldHJ5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQKLSAgICBXaW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJbnRS
ZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5kb3dlZFBsdWdpbkdlb21l
dHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJbnRSZWN0
IGNsaXBSZWN0LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2NjbHVzaW9ucywgdWludDY0X3Qg
d2luZG93SUQpCiAjZW5kaWYKIAogICAgICMgVGVsbHMgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUg
cGx1Zy1pbiB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
YjE3ZTgyNy4uNmYxMGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTAxOSw2ICsxMDE5LDEwNCBAQCBib29sIFBsdWdpblZp
ZXc6OnRyYW5zZm9ybXNBZmZlY3RGcmFtZVJlY3QoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
c3RhdGljIGJvb2wgaWZyYW1lSXNBYm92ZVBsdWdpbihjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4mIGlmcmFtZVpJbmRleFN0YWNrLCBjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2Jq
ZWN0Kj4mIHBsdWdpblpJbmRleFN0YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aWZyYW1lWkluZGV4U3RhY2suc2l6ZSgpICYmIGkgPCBwbHVnaW5aSW5kZXhTdGFjay5zaXplKCk7
ICsraSkgeworICAgICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0aGUgZW5kIG9mIHRoZXNlIHN0YWNr
cy4gV2Ugd2FudCB0byBpdGVyYXRlIHJvb3QtZG93bndhcmRzIHNvIHdlIGluZGV4IGJhY2t3YXJk
cyBmcm9tIHRoZSBlbmQuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogaWZyYW1lU3RhY2tS
b290T2JqZWN0ID0gaWZyYW1lWkluZGV4U3RhY2tbaWZyYW1lWkluZGV4U3RhY2suc2l6ZSgpIC0g
MSAtIGldOworICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBsdWdpblN0YWNrUm9vdE9iamVj
dCA9IHBsdWdpblpJbmRleFN0YWNrW3BsdWdpblpJbmRleFN0YWNrLnNpemUoKSAtIDEgLSBpXTsK
KyAgICAgICAgaWYgKGlmcmFtZVN0YWNrUm9vdE9iamVjdCA9PSBwbHVnaW5TdGFja1Jvb3RPYmpl
Y3QpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBXaGVuIHdlIGZpbmQgbm9k
ZXMgaW4gdGhlIHN0YWNrIHRoYXQgYXJlIG5vdCB0aGUgc2FtZSwgdGhlbiB3ZSd2ZSBmb3VuZCB0
aGUgbm9kZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0IGNvbW1lbnQgYW5jZXN0b3IuCisgICAgICAg
IC8vIERldGVybWluZSB3aGljaCBzaG91bGQgYmUgb24gdG9wLgorICAgICAgICBpZiAoaWZyYW1l
U3RhY2tSb290T2JqZWN0LT5zdHlsZSgpLnpJbmRleCgpID4gcGx1Z2luU3RhY2tSb290T2JqZWN0
LT5zdHlsZSgpLnpJbmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChpZnJhbWVTdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkuekluZGV4KCkgPCBwbHVnaW5TdGFja1Jv
b3RPYmplY3QtPnN0eWxlKCkuekluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgLy8gSWYgdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHotaW5k
ZXggaXQgc3RhY2tzIGJlaGluZCB0aGUgaWZyYW1lLiBUaGlzIGlzIGZvciBtYWludGFpbmluZyBj
b21wYXRpYmlsaXR5IHdpdGggSUUuCisgICAgICAgIGlmIChwbHVnaW5TdGFja1Jvb3RPYmplY3Qt
PnN0eWxlKCkucG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikgeworICAgICAgICAgICAgLy8g
VGhlIDAndGggZWxlbWVudHMgb2YgdGhlc2UgUmVuZGVyT2JqZWN0IGFycmF5cyByZXByZXNlbnQg
dGhlIHBsdWdpbiBub2RlIGFuZCB0aGUgaWZyYW1lLgorICAgICAgICAgICAgY29uc3QgUmVuZGVy
T2JqZWN0KiBwbHVnaW5SZW5kZXJPYmplY3QgPSBwbHVnaW5aSW5kZXhTdGFja1swXTsKKyAgICAg
ICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVyT2JqZWN0ID0gaWZyYW1lWklu
ZGV4U3RhY2tbMF07CisKKyAgICAgICAgICAgIGlmIChwbHVnaW5SZW5kZXJPYmplY3QtPnN0eWxl
KCkuekluZGV4KCkgPiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCkuekluZGV4KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBJbnNwZWN0IHRoZSBkb2N1bWVudCBvcmRlci4gTGF0ZXIgb3Jk
ZXIgbWVhbnMgaGlnaGVyIHN0YWNraW5nLgorICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBh
cmVudCA9IGlmcmFtZVN0YWNrUm9vdE9iamVjdC0+cGFyZW50KCk7CisgICAgICAgIGlmICghcGFy
ZW50KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQocGFyZW50ID09
IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+cGFyZW50KCkpOworCisgICAgICAgIGZvciAoY29uc3Qg
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IHRvUmVuZGVyRWxlbWVudChwYXJlbnQpLT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBp
ZiAoY2hpbGQgPT0gaWZyYW1lU3RhY2tSb290T2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmIChjaGlsZCA9PSBwbHVnaW5TdGFja1Jvb3RPYmplY3Qp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc3RhdGljIFJlbmRlck9iamVjdCogZnJhbWVWaWV3T3duZXJJRnJhbWVS
ZW5kZXJlcihjb25zdCBGcmFtZVZpZXcqIGZyYW1lVmlldykKK3sKKyAgICBIVE1MRWxlbWVudCog
ZWxlbWVudCA9IGZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKKyAgICBpZiAoIWVs
ZW1lbnQgfHwgIWVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpID8g
ZWxlbWVudC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIGJ1aWxkWklu
ZGV4U3RhY2soUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVj
dCo+JiB6SW5kZXhTdGFjaykKK3sKKyAgICB6SW5kZXhTdGFjay5jbGVhcigpOworICAgIHdoaWxl
IChyZW5kZXJlcikgeworICAgICAgICB6SW5kZXhTdGFjay5hcHBlbmQocmVuZGVyZXIpOworICAg
ICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUGx1
Z2luVmlldzo6Z2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMoVmVjdG9yPEludFJlY3Q+JiBvY2Ns
dXNpb25zKSBjb25zdAoreworICAgIGlmICghcGFyZW50KCkgfHwgIXBhcmVudCgpLT5pc0ZyYW1l
VmlldygpKQorICAgICAgICByZXR1cm47CisgICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcg
PSB0b0ZyYW1lVmlldyhwYXJlbnQoKSk7CisKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0
Kj4gcGx1Z2luWkluZGV4U3RhY2s7CisgICAgYnVpbGRaSW5kZXhTdGFjayhtX3BsdWdpbkVsZW1l
bnQtPnJlbmRlcmVyKCksIHBsdWdpblpJbmRleFN0YWNrKTsKKworICAgIGNvbnN0IEludFJlY3Qm
IHBsdWdpblJlY3QgPSBmcmFtZVJlY3QoKTsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0
Kj4gaWZyYW1lWkluZGV4U3RhY2s7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVu
dEZyYW1lVmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQg
RnJhbWVWaWV3cyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZpZXdzLgorICAgICAg
ICBpZiAoIWNoaWxkLT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGZyYW1lVmlld093bmVySUZyYW1l
UmVuZGVyZXIodG9GcmFtZVZpZXcoY2hpbGQuZ2V0KCkpKTsKKyAgICAgICAgaWYgKCFpZnJhbWVS
ZW5kZXJlciB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChpZnJhbWVSZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5pbnRlcnNlY3RzKHBs
dWdpblJlY3QpKSB7CisgICAgICAgICAgICBidWlsZFpJbmRleFN0YWNrKGlmcmFtZVJlbmRlcmVy
LCBpZnJhbWVaSW5kZXhTdGFjayk7CisKKyAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1
Z2luKGlmcmFtZVpJbmRleFN0YWNrLCBwbHVnaW5aSW5kZXhTdGFjaykpIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJCb3gqIHJlbmRlcmVyID0gdG9SZW5kZXJCb3goaWZyYW1lUmVuZGVy
ZXIpOworICAgICAgICAgICAgICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBvaW50KHJl
bmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKSk7CisgICAgICAgICAgICAgICAgcG9pbnQubW92ZSgt
cGx1Z2luUmVjdC54KCksIC1wbHVnaW5SZWN0LnkoKSk7CisgICAgICAgICAgICAgICAgSW50U2l6
ZSBzaXplKHJlbmRlcmVyLT53aWR0aCgpLCByZW5kZXJlci0+aGVpZ2h0KCkpOworICAgICAgICAg
ICAgICAgIG9jY2x1c2lvbnMuYXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBQbHVnaW5WaWV3Ojp2aWV3R2VvbWV0
cnlEaWRDaGFuZ2UoKQogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbiB8
fCAhcGFyZW50KCkpCkBAIC0xMDQ3LDggKzExNDUsMTIgQEAgdm9pZCBQbHVnaW5WaWV3Ojp2aWV3
R2VvbWV0cnlEaWRDaGFuZ2UoKQogICAgICAgICBpZiAoIWNsaXBSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGNsaXBSZWN0ID0gYm91bmRzUmVjdCgpOwogICAgIH0KLSAgICAKLSAgICBtX3Bs
dWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2Uoc2l6ZSgpLCBjbGlwUmVjdCwgdHJhbnNmb3JtKTsKKwor
ICAgIFZlY3RvcjxJbnRSZWN0PiBvY2NsdXNpb25zOworICAgIGlmIChtX3BsdWdpbi0+aXNXaW5k
b3dlZCgpKQorICAgICAgICBnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcyhvY2NsdXNpb25zKTsK
KworICAgIG1fcGx1Z2luLT5nZW9tZXRyeURpZENoYW5nZShzaXplKCksIGNsaXBSZWN0LCB0cmFu
c2Zvcm0sIG9jY2x1c2lvbnMpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OnZpZXdWaXNpYmlsaXR5
RGlkQ2hhbmdlKCkKQEAgLTE2MTAsOSArMTcxMiw5IEBAIHVpbnQ2NF90IFBsdWdpblZpZXc6OmNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcigpCiAgICAgcmV0dXJuIHdpbmRvd0lEOwogfQogCi12b2lkIFBs
dWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpCit2b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCB1
aW50NjRfdCB3aW5kb3dJRCkKIHsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBS
ZWN0LCB3aW5kb3dJRCkpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3Qs
IG9jY2x1c2lvbnMsIHdpbmRvd0lEKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNzc5NjMzNC4uMzlhNjU0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBA
IC0yMTIsNyArMjEyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdW5wcm90ZWN0UGx1
Z2luRnJvbURlc3RydWN0aW9uKCk7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAg
dmlydHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3
aW5kb3dJRCk7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25z
LCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbml0
aWFsaXplUGx1Z2luKCk7CkBAIC0yMjUsNiArMjI1LDExIEBAIHByaXZhdGU6CiAKICAgICBPd25Q
dHI8V2ViRXZlbnQ+IGNyZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsK
IAorICAgIC8vIFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBv
dmVyZHJhd24gYnkgdGhlIHBsdWdpbiAoImN1dG91dHMiKS4gVGhpcyBoZWxwcyBpbXBsZW1lbnQg
dGhlICJpZnJhbWUgc2hpbSIKKyAgICAvLyB0ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRv
d2VkIHBsdWdpbiB3aXRoIGNvbnRlbnQgZnJvbSB0aGUgcGFnZS4gSWZyYW1lIGVsZW1lbnRzIHNo
b3VsZCBvY2NsdWRlIHBsdWdpbnMgd2hlbiB0aGV5IG9jY3VyCisgICAgLy8gaGlnaGVyIGluIHRo
ZSBzdGFja2luZyBvcmRlci4KKyAgICB2b2lkIGdldE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNvbnN0OworCiAgICAgUmVmUHRyPFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAgUmVmUHRyPFBsdWdpbj4gbV9w
bHVnaW47CiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230170</attachid>
            <date>2014-04-25 05:12:40 -0700</date>
            <delta_ts>2014-04-28 01:37:10 -0700</delta_ts>
            <desc>Try to fix mac and EFL builds</desc>
            <filename>wk2-iframe-shim2.diff</filename>
            <type>text/plain</type>
            <size>33794</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MTk3NTE1Li40OTdlYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzQg
QEAKIDIwMTQtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdp
bmRvd2VkIHBsdWdpbnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSXQgYWxsb3dzIHRvIHNob3cgaWZyYW1lcyBvbiB0b3Agb2YgYSB3
aW5kb3dlZCBwbHVnaW4uIFRoZQorICAgICAgICBpbXBsZW1lbnRhdG9uIGlzIGJhc2VkIG9uIGNo
cm9taXVtIG9uZSwgaXQgY2hlY2tzIHRoZSBhcmVhcyBvZiB0aGUKKyAgICAgICAgd2luZG93ZWQg
cGx1Z2lucyB0aGF0IGFyZSBvY2NsdWRlZCBieSBhbiBpZnJhbWUuIFRoZSBvY2NsdXNpb24KKyAg
ICAgICAgcmVjdGFuZ2xlcyBhcmUgc2VudCB0byB0aGUgVUkgcHJvY2VzcyB0byBwcm9wZXJseSBt
YXNrIHRoZSBwbHVnaW4KKyAgICAgICAgY29udGFpbmVyIHdpbmRvdy4KKyAgICAgICAgVGhpcyBp
cyBjb3ZlcmVkIGJ5IHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwuCisKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBBZGQgb2NjbHVzaW9ucyBw
YXJhbWV0ZXIuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dl
ZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBTdWJzdHJhY3QKKyAgICAgICAgdGhlIG9j
Y2x1c2lvbiByZWN0YW5nbGVzIGZyb20gdGhlIHBsdWdpbiBjb250YWluZXIgd2luZG93IGNsaXAg
cmVnaW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc1dpbmRvd2VkKTog
UmV0dXJuIHdoZXRoZXIgdGhlIHBsdWdpbiBpcworICAgICAgICB3aW5kb3dlZCBvciBub3QuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZSk6IFNhdmUg
dGhlIHBhc3NlZCBpbiBvY2NsdXNpb25zLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSk6IFBhc3MgYWxzbyB0aGUKKyAg
ICAgICAgb2NjbHVzaW9ucyB0byB0aGUgY29udHJvbGxlci4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOiBBZGQgaXNXaW5kb3dlZCgpIGltcGxlbWVudGF0aW9u
LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgbWV0aG9kIGFuZAorICAg
ICAgICBvY2NsdXNpb25zIHBhcmFtZXRlciB0byBnZW9tZXRyeURpZENoYW5nZSgpLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6IEFkZCBvY2NsdXNpb25z
IHBhcmFtZXRlcgorICAgICAgICB0byBnZW9tZXRyeURpZENoYW5nZSgpLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb3h5OjpQbHVnaW5Qcm94eSk6IEluaXRpYWxpemUgbV9pc1dpbmRvd2VkIHRvIGZhbHNlLgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aXNXaW5kb3dlZCk6IFJldHVybiB3aGV0aGVy
IHRoZSBwbHVnaW4gaXMKKyAgICAgICAgd2luZG93ZWQgb3Igbm90LgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBTYXZlIHRoZSBwYXNzZWQgaW4gb2Nj
bHVzaW9ucy4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRh
aW5lcik6IFNldCBtX2lzV2luZG93ZWQgdG8KKyAgICAgICAgdHJ1ZSBpZiBhIHBsdWdpbiBjb250
YWluZXIgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBQYXNzIHRoZQorICAgICAgICBvY2NsdXNp
b25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNz
YWdlcy5pbjogQWRkIG9jY2x1c2lvbnMKKyAgICAgICAgcGFyYW1ldGVyIHRvIFdpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UgbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlmcmFtZUlzQWJvdmVQbHVnaW4p
OiBIZWxwZXIgc3RhdGljIGZ1bmN0aW9uIHRvIGNoZWNrIGlmCisgICAgICAgIHRoZSBpZnJhbWUg
aXMgYWJvdmUgdGhlIHBsdWdpbi4KKyAgICAgICAgKFdlYktpdDo6ZnJhbWVWaWV3T3duZXJJRnJh
bWVSZW5kZXJlcik6IFJldHVybiB0aGUgb3duZXIgZWxlbWVudAorICAgICAgICByZW5kZXJlciBv
ZiB0aGUgZ2l2ZW4gRnJhbWVWaWV3IGlmIGl0J3MgYW4gaWZyYW1lLgorICAgICAgICAoV2ViS2l0
OjpidWlsZFpJbmRleFN0YWNrKTogSGVscGVyIGZ1bmN0aW9uIHRvIGJ1aWxkIHRoZSByZW5kZXIK
KyAgICAgICAgc3RhY2sgb2YgYSBnaXZlbiByZW5kZXJlci4KKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6Z2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMpOiBSZXR1cm5zIHRoZSBzZXQKKyAg
ICAgICAgb2YgYXJlYXMgb2YgdGhlIHBsdWdpbiB0aGF0IGFyZSBvY2NsdWRlZCBieSBhbiBpZnJh
bWUuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnZpZXdHZW9tZXRyeURpZENoYW5nZSk6
IENhbGwKKyAgICAgICAgZ2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMoKSBmb3Igd2luZG93ZWQg
cGx1Z2lucyBhbmQgcGFzcyB0aGUKKyAgICAgICAgb2NjbHVzaW9ucyB0byB0aGUgcGx1Z2luLgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKTogQWRkCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisKKzIwMTQtMDQtMjUgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIFBsdWdpbiBwcm9j
ZXNzIGNyYXNoZXMgd2l0aCBHVEsyIHdpbmRvd2VkIHBsdWdpbnMKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjEyNwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXgg
M2RlZDdkOS4uYTcyNjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQg
UGx1Z2luQ29udHJvbGxlclByb3h5OjpmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBi
b29sIHdhc0NhbmNlbGxlZCkKICAgICBtX3BsdWdpbi0+ZnJhbWVEaWRGYWlsKHJlcXVlc3RJRCwg
d2FzQ2FuY2VsbGVkKTsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Omdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGZs
b2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBi
YWNraW5nU3RvcmVIYW5kbGUpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Z2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29u
c3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCBmbG9hdCBjb250ZW50c1NjYWxlRmFjdG9y
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYmFja2luZ1N0b3JlSGFuZGxlKQogewog
ICAgIEFTU0VSVChtX3BsdWdpbik7CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6
ZSwgY29uc3QgSQogICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGJhY2tpbmdTdG9yZUhhbmRsZSk7CiAgICAgfQogCi0gICAgbV9wbHVnaW4tPmdlb21ldHJ5
RGlkQ2hhbmdlKHBsdWdpblNpemUsIGNsaXBSZWN0LCBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
KTsKKyAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2UocGx1Z2luU2l6ZSwgY2xpcFJlY3Qs
IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIG9jY2x1c2lvbnMpOwogfQogCiB2b2lkIFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJ
RCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCkBAIC02MDUsOSArNjA1LDkgQEAgdWludDY0X3QgUGx1
Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3
aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRSZWN0JiBmcmFtZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1
c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCksIG1fcGx1Z2luSW5zdGFuY2VJ
RCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdp
blByb3h5OjpXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJl
Y3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lEKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAppbmRleCA2NWQ5MDJiLi4zM2E2NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTExNSwxMyAr
MTE1LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdpbkZyb21E
ZXN0cnVjdGlvbigpOwogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgIHZpcnR1YWwg
dWludDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbmRv
d2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQp
OworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0
X3Qgd2luZG93SUQpOwogI2VuZGlmCiAgICAgCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAg
ICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZv
aWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwot
ICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2lu
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgZmxvYXQgY29udGVudHNT
Y2FsZUZhY3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhh
bmRsZSk7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIGZsb2F0IGNvbnRlbnRzU2NhbGVG
YWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUp
OwogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU3RyaW5nJiByZXN1bHQpOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNmI2YTMwOC4uMzRlZWYwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMg
LT4gUGx1Z2luQ29udHJvbGxlclByb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIFNlbnQgd2hl
biB0aGUgcGx1Zy1pbiBnZW9tZXRyeSBjaGFuZ2VzLgotICAgIEdlb21ldHJ5RGlkQ2hhbmdlKFdl
YkNvcmU6OkludFNpemUgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGZsb2F0IHNj
YWxlRmFjdG9yLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhh
bmRsZSkKKyAgICBHZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRTaXplIHBsdWdpblNpemUs
IFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3QsIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSBwbHVn
aW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2NjbHVzaW9u
cywgZmxvYXQgc2NhbGVGYWN0b3IsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYmFj
a2luZ1N0b3JlSGFuZGxlKQogCiAgICAgIyBTZW50IHdoZW4gYSBmcmFtZSBoYXMgZmluaXNoZWQg
bG9hZGluZy4KICAgICBGcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDMwMzFjMGUuLjBjMmNm
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzODEsNyAr
MTM4MSw3IEBAIHByaXZhdGU6CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICB2
b2lkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOwotICAgIHZvaWQg
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
cmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5k
b3dJRCk7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qg
d2luZG93SUQpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMzEyOWJlMi4uYTViZDQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMTMsNyArMzEzLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAg
ICAjIFgxMSB3aW5kb3dlZCBwbHVnaW4gbWVzc2FnZXMKICAgICBDcmVhdGVQbHVnaW5Db250YWlu
ZXIoKSAtPiAodWludDY0X3Qgd2luZG93SUQpCi0gICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlw
UmVjdCwgdWludDY0X3Qgd2luZG93SUQpCisgICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENo
YW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVj
dCwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lE
KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggYmQwYmM2MS4uMTVkNDU4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVy
KHVpbnQ2NF90JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90KQordm9pZCBXZWJQYWdlUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
LCB1aW50NjRfdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDhhNTM5ODUuLmE1
MDk0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKICAgICBwbHVnaW5XaW5kb3dNYXAoKS5z
ZXQod2luZG93SUQsIHNvY2tldCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBs
dWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQordm9p
ZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVj
dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3
aW5kb3dJRCkKIHsKICAgICBHdGtXaWRnZXQqIHBsdWdpbiA9IHBsdWdpbldpbmRvd01hcCgpLmdl
dCh3aW5kb3dJRCk7CiAgICAgaWYgKCFwbHVnaW4pCkBAIC0xMTEsNiArMTExLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGZyYW1lCiAgICAgaWYgKGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHBsdWdp
bikpIHsKICAgICAgICAgR2RrUmVjdGFuZ2xlIGNsaXAgPSBjbGlwUmVjdDsKICAgICAgICAgY2Fp
cm9fcmVnaW9uX3QqIGNsaXBSZWdpb24gPSBjYWlyb19yZWdpb25fY3JlYXRlX3JlY3RhbmdsZSgm
Y2xpcCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IG9jY2x1c2lvbnMpIHsKKyAg
ICAgICAgICAgIEdka1JlY3RhbmdsZSBvY2NsdXNpb24gPSByZWN0OworICAgICAgICAgICAgY2Fp
cm9fcmVnaW9uX3N1YnRyYWN0X3JlY3RhbmdsZShjbGlwUmVnaW9uLCAmb2NjbHVzaW9uKTsKKyAg
ICAgICAgfQogICAgICAgICBnZGtfd2luZG93X3NoYXBlX2NvbWJpbmVfcmVnaW9uKGd0a193aWRn
ZXRfZ2V0X3dpbmRvdyhwbHVnaW4pLCBjbGlwUmVnaW9uLCAwLCAwKTsKICAgICAgICAgY2Fpcm9f
cmVnaW9uX2Rlc3Ryb3koY2xpcFJlZ2lvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAKaW5kZXggZTljNjg2Ni4uMmUxMTNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBA
IC03MjQsMTYgKzcyNCwyMSBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjppc1RyYW5zcGFyZW50KCkK
ICAgICByZXR1cm4gbV9pc1RyYW5zcGFyZW50OwogfQogCitib29sIE5ldHNjYXBlUGx1Z2luOjpp
c1dpbmRvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1dpbmRvd2VkOworfQorCiBib29s
IE5ldHNjYXBlUGx1Z2luOjp3YW50c1doZWVsRXZlbnRzKCkKIHsKICAgICByZXR1cm4gbV9wbHVn
aW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6V2FudHNXaGVl
bEV2ZW50cyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pCit2b2lkIE5ldHNjYXBl
UGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RW
aWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMpCiB7CiAgICAg
QVNTRVJUKG1faXNTdGFydGVkKTsKIAotICAgIGlmIChwbHVnaW5TaXplID09IG1fcGx1Z2luU2l6
ZSAmJiBtX2NsaXBSZWN0ID09IGNsaXBSZWN0ICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7CisgICAgaWYgKHBsdWdpblNpemUgPT0g
bV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RW
aWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gJiYgbV9vY2NsdXNpb25z
ID09IG9jY2x1c2lvbnMpIHsKICAgICAgICAgLy8gTm90aGluZyB0byBkby4KICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTc0Nyw2ICs3NTIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0Jgog
ICAgIG1fcGx1Z2luU2l6ZSA9IHBsdWdpblNpemU7CiAgICAgbV9jbGlwUmVjdCA9IGNsaXBSZWN0
OwogICAgIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFu
c2Zvcm07CisgICAgbV9vY2NsdXNpb25zID0gb2NjbHVzaW9uczsKIAogICAgIEludFBvaW50IGZy
YW1lUmVjdExvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyA9IG1fcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybS5tYXBQb2ludChJbnRQb2ludCgpKTsKICAgICBtX2ZyYW1lUmVjdEluV2luZG93Q29v
cmRpbmF0ZXMgPSBJbnRSZWN0KGZyYW1lUmVjdExvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcywg
bV9wbHVnaW5TaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYWQyNzY3ZC4uYzZmOGNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE4NCw4ICsxODQsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKTsKICNlbmRpZgogICAgIHZp
cnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCk7CisgICAgdmlydHVhbCBib29sIGlzV2luZG93ZWQo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwg
Y29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKTsKICAgICB2aXJ0dWFsIHZv
aWQgdmlzaWJpbGl0eURpZENoYW5nZSgpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZpbmlz
aExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEaWRG
YWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwpAQCAtMjkyLDYgKzI5
Myw4IEBAIHByaXZhdGU6CiAgICAgLy8gQSB0cmFuc2Zvcm0gdGhhdCBjYW4gYmUgdXNlZCB0byBj
b252ZXJ0IGZyb20gcm9vdCB2aWV3IGNvb3JkaW5hdGVzIHRvIHBsdWctaW4gY29vcmRpbmF0ZXMu
CiAgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBtX29jY2x1c2lvbnM7CisKICAgICAv
LyBGSVhNRTogR2V0IHJpZCBvZiB0aGVzZS4KICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZnJhbWVS
ZWN0SW5XaW5kb3dDb29yZGluYXRlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcAppbmRleCBkYjRiZjI0Li5lYzZhZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAg
d2luZG93SUQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oR0RLX1dJTkRPV19YSUQoZ3RrX3BsdWdf
Z2V0X3NvY2tldF93aW5kb3coR1RLX1BMVUcobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkpKSk7CiAj
ZW5kaWYKLSAgICAgICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcywgbV9jbGlwUmVjdCwgd2luZG93SUQp
OworICAgICAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
bV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBtX2NsaXBSZWN0LCBtX29jY2x1c2lvbnMs
IHdpbmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNmE3ZTliMC4uNjQ1
MDIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCkBAIC0xMTUsOCArMTE1LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzV2luZG93ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29u
c3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQppbmRleCA1YjM2N2EyLi5kMWE0ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTE5MCw3ICsxMTkwLDcgQEAgSW50
UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWVW
aWV3LT5jb250ZW50c1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QocmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcykpOwogfQogCi12b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkKK3ZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURp
ZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8
SW50UmVjdD4mKQogewogICAgIGlmIChzaXplKCkgPT0gcGx1Z2luU2l6ZSAmJiBwbHVnaW5WaWV3
KCktPnBhZ2VTY2FsZUZhY3RvcigpID09IFttX3BkZkxheWVyQ29udHJvbGxlciBjb250ZW50U2Nh
bGVGYWN0b3JdKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKaW5kZXggYzU0YTRhMS4uMTNkOTg1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTM0LDEyICsxMzQsMTUgQEAgcHVibGlj
OgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcGx1Zy1pbiBpcyB0cmFuc3BhcmVudCBvciBu
b3QuCiAgICAgdmlydHVhbCBib29sIGlzVHJhbnNwYXJlbnQoKSA9IDA7CiAKKyAgICAvLyBSZXR1
cm5zIHdoZXRoZXIgdGhlIHBsdWctaW4gaXMgd2luZG93ZWQgb3Igbm90LgorICAgIHZpcnR1YWwg
Ym9vbCBpc1dpbmRvd2VkKCkgY29uc3QgPSAwOworCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHdl
IHNob3VsZCBzZW5kIHdoZWVsIGV2ZW50cyB0byB0aGlzIHBsdWctaW4uCiAgICAgdmlydHVhbCBi
b29sIHdhbnRzV2hlZWxFdmVudHMoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0
aGF0IGl0cyBnZW9tZXRyeSBoYXMgY2hhbmdlZC4gVGhlIGNsaXAgcmVjdCBpcyBpbiBwbHVnLWlu
IGNvb3JkaW5hdGVzLCBhbmQgdGhlIGFmZmluZSB0cmFuc2Zvcm0gY2FuIGJlIHVzZWQKICAgICAv
LyB0byBjb252ZXJ0IGZyb20gcm9vdCB2aWV3IGNvb3JkaW5hdGVzIHRvIHBsdWctaW4gY29vcmRp
bmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBj
b25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKSA9IDA7CiAKICAgICAv
LyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGl0IGhhcyBiZWVuIGV4cGxpY2l0bHkgaGlkZGVuIG9y
IHNob3duLiAoTm90ZSB0aGF0IHRoaXMgaXMgbm90IGNhbGxlZCB3aGVuIHRoZSBwbHVnLWluIGJl
Y29tZXMgb2JzY3VyZWQgZnJvbSB2aWV3IG9uIHNjcmVlbi4pCiAgICAgdmlydHVhbCB2b2lkIHZp
c2liaWxpdHlEaWRDaGFuZ2UoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCA3OWNjYTU5Li42ZWEwNGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250
cm9sbGVyLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAjaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCiAgICAgLy8gQ3JlYXRlIGEgcGx1Z2luIGNvbnRhaW5lciBmb3Igd2luZG93ZWQg
cGx1Z2lucwogICAgIHZpcnR1YWwgdWludDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2Vk
UGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCkgPSAwOwogI2VuZGlmCiAK
ICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgYSBwbHVnLWluIGluc3RhbmNlIGlzIHN1Y2Nlc3NmdWxs
eSBpbml0aWFsaXplZCwgZWl0aGVyIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApp
bmRleCA3ZDljMzY4Ni4uOWNlYjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC03MSw2ICs3MSw3IEBAIFBsdWdpblByb3h5
OjpQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0
ZWRQcm9jZXNzKQogICAgICwgbV9yZW1vdGVMYXllckNsaWVudElEKDApCiAgICAgLCBtX3dhaXRp
bmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9pc1Jlc3RhcnRl
ZFByb2Nlc3MoaXNSZXN0YXJ0ZWRQcm9jZXNzKQorICAgICwgbV9pc1dpbmRvd2VkKGZhbHNlKQog
ewogfQogCkBAIC0yNTcsNiArMjU4LDExIEBAIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJl
bnQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBQbHVnaW5Qcm94eTo6aXNXaW5kb3dl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNXaW5kb3dlZDsKK30KKwogYm9vbCBQbHVnaW5Q
cm94eTo6d2FudHNXaGVlbEV2ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fd2FudHNXaGVlbEV2ZW50
czsKQEAgLTI4MywxMiArMjg5LDEyIEBAIHZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hh
bmdlKCkKICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YSA9IGZh
bHNlOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6
ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb250ZW50c1NjYWxl
RmFjdG9yKCksIHBsdWdpbkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwg
SVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVy
UHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVn
aW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBtX29jY2x1c2lvbnMsIGNvbnRlbnRzU2NhbGVGYWN0b3Io
KSwgcGx1Z2luQmFja2luZ1N0b3JlSGFuZGxlKSwgbV9wbHVnaW5JbnN0YW5jZUlELCBJUEM6OkRp
c3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKLXZvaWQgUGx1
Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pCit2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25z
dCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpCiB7Ci0gICAgaWYgKHBsdWdpblNpemUgPT0gbV9w
bHVnaW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtID09IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAocGx1Z2lu
U2l6ZSA9PSBtX3BsdWdpblNpemUgJiYgbV9jbGlwUmVjdCA9PSBjbGlwUmVjdCAmJiBtX3BsdWdp
blRvUm9vdFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSAmJiBtX29j
Y2x1c2lvbnMgPT0gb2NjbHVzaW9ucykgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjk2LDYgKzMwMiw3IEBAIHZvaWQgUGx1Z2luUHJveHk6
Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJl
Y3QmIGNsCiAgICAgbV9wbHVnaW5TaXplID0gcGx1Z2luU2l6ZTsKICAgICBtX2NsaXBSZWN0ID0g
Y2xpcFJlY3Q7CiAgICAgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybTsKKyAgICBtX29jY2x1c2lvbnMgPSBvY2NsdXNpb25zOwogCiAgICAgZ2Vv
bWV0cnlEaWRDaGFuZ2UoKTsKIH0KQEAgLTY3NCwxMSArNjgxLDEyIEBAIHZvaWQgUGx1Z2luUHJv
eHk6OnNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNiYXJUZXh0KQogdm9pZCBQ
bHVnaW5Qcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKIHsK
ICAgICB3aW5kb3dJRCA9IGNvbnRyb2xsZXIoKS0+Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7Cisg
ICAgbV9pc1dpbmRvd2VkID0gd2luZG93SUQ7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6OndpbmRv
d2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQp
Cit2b2lkIFBsdWdpblByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93
SUQpCiB7Ci0gICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdl
KGZyYW1lUmVjdCwgY2xpcFJlY3QsIHdpbmRvd0lEKTsKKyAgICBjb250cm9sbGVyKCktPndpbmRv
d2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgb2NjbHVzaW9u
cywgd2luZG93SUQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNDkzN2U1Zi4uYTFmNjNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTgyLDgg
KzgyLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVy
KCk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc3BhcmVudCgpOworICAgIHZpcnR1
YWwgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHdh
bnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2lu
VG9Sb290Vmlld1RyYW5zZm9ybSk7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9u
cyk7CiAgICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgdmly
dHVhbCB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2Vs
bGVkKTsKQEAgLTE3MCw3ICsxNzEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCiAgICAgdm9pZCBjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3Qm
IHdpbmRvd0lEKTsKLSAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
bGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5J
bml0aWFsaXplQXN5bmNocm9ub3VzbHkoKSBjb25zdDsKQEAgLTE5NCw2ICsxOTUsOCBAQCBwcml2
YXRlOgogICAgIC8vIEEgdHJhbnNmb3JtIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29udmVydCBmcm9t
IHJvb3QgdmlldyBjb29yZGluYXRlcyB0byBwbHVnLWluIGNvb3JkaW5hdGVzLgogICAgIFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybSBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07CiAKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gbV9vY2NsdXNpb25zOworCiAgICAgLy8gVGhpcyBpcyB0
aGUgYmFja2luZyBzdG9yZSB0aGF0IHdlIHBhaW50IHdoZW4gd2UncmUgdG9sZCB0byBwYWludC4K
ICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JhY2tpbmdTdG9yZTsKIApAQCAtMjIzLDYg
KzIyNiw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFByb2Nl
c3M7CisKKyAgICBib29sIG1faXNXaW5kb3dlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQxN2UxN2UuLmRjMGRlMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTcyLDcgKzcyLDcgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIENyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJ
RCkKIAogICAgICMgVXBkYXRlIGdlb21ldHJ5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQKLSAg
ICBXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVS
ZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBX
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0
LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2Nj
bHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKIAogICAgICMgVGVsbHMgdGhlIFdl
YlByb2Nlc3MgdGhhdCB0aGUgcGx1Zy1pbiB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFz
eW5jaHJvbm91c2x5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggYjE3ZTgyNy4uNmYxMGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTAxOSw2ICsxMDE5LDEw
NCBAQCBib29sIFBsdWdpblZpZXc6OnRyYW5zZm9ybXNBZmZlY3RGcmFtZVJlY3QoKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgaWZyYW1lSXNBYm92ZVBsdWdpbihjb25zdCBW
ZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIGlmcmFtZVpJbmRleFN0YWNrLCBjb25zdCBWZWN0
b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIHBsdWdpblpJbmRleFN0YWNrKQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaWZyYW1lWkluZGV4U3RhY2suc2l6ZSgpICYmIGkgPCBwbHVnaW5a
SW5kZXhTdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0aGUg
ZW5kIG9mIHRoZXNlIHN0YWNrcy4gV2Ugd2FudCB0byBpdGVyYXRlIHJvb3QtZG93bndhcmRzIHNv
IHdlIGluZGV4IGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQuCisgICAgICAgIGNvbnN0IFJlbmRlck9i
amVjdCogaWZyYW1lU3RhY2tSb290T2JqZWN0ID0gaWZyYW1lWkluZGV4U3RhY2tbaWZyYW1lWklu
ZGV4U3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBs
dWdpblN0YWNrUm9vdE9iamVjdCA9IHBsdWdpblpJbmRleFN0YWNrW3BsdWdpblpJbmRleFN0YWNr
LnNpemUoKSAtIDEgLSBpXTsKKyAgICAgICAgaWYgKGlmcmFtZVN0YWNrUm9vdE9iamVjdCA9PSBw
bHVnaW5TdGFja1Jvb3RPYmplY3QpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyBXaGVuIHdlIGZpbmQgbm9kZXMgaW4gdGhlIHN0YWNrIHRoYXQgYXJlIG5vdCB0aGUgc2FtZSwg
dGhlbiB3ZSd2ZSBmb3VuZCB0aGUgbm9kZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0IGNvbW1lbnQg
YW5jZXN0b3IuCisgICAgICAgIC8vIERldGVybWluZSB3aGljaCBzaG91bGQgYmUgb24gdG9wLgor
ICAgICAgICBpZiAoaWZyYW1lU3RhY2tSb290T2JqZWN0LT5zdHlsZSgpLnpJbmRleCgpID4gcGx1
Z2luU3RhY2tSb290T2JqZWN0LT5zdHlsZSgpLnpJbmRleCgpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGlmIChpZnJhbWVTdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkuekluZGV4
KCkgPCBwbHVnaW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkuekluZGV4KCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gSWYgdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZl
IGFuIGV4cGxpY2l0IHotaW5kZXggaXQgc3RhY2tzIGJlaGluZCB0aGUgaWZyYW1lLiBUaGlzIGlz
IGZvciBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGggSUUuCisgICAgICAgIGlmIChwbHVn
aW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkucG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikg
eworICAgICAgICAgICAgLy8gVGhlIDAndGggZWxlbWVudHMgb2YgdGhlc2UgUmVuZGVyT2JqZWN0
IGFycmF5cyByZXByZXNlbnQgdGhlIHBsdWdpbiBub2RlIGFuZCB0aGUgaWZyYW1lLgorICAgICAg
ICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwbHVnaW5SZW5kZXJPYmplY3QgPSBwbHVnaW5aSW5k
ZXhTdGFja1swXTsKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVy
T2JqZWN0ID0gaWZyYW1lWkluZGV4U3RhY2tbMF07CisKKyAgICAgICAgICAgIGlmIChwbHVnaW5S
ZW5kZXJPYmplY3QtPnN0eWxlKCkuekluZGV4KCkgPiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxl
KCkuekluZGV4KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJbnNwZWN0IHRoZSBkb2N1bWVu
dCBvcmRlci4gTGF0ZXIgb3JkZXIgbWVhbnMgaGlnaGVyIHN0YWNraW5nLgorICAgICAgICBjb25z
dCBSZW5kZXJPYmplY3QqIHBhcmVudCA9IGlmcmFtZVN0YWNrUm9vdE9iamVjdC0+cGFyZW50KCk7
CisgICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBBU1NFUlQocGFyZW50ID09IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+cGFyZW50KCkpOworCisg
ICAgICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHRvUmVuZGVyRWxlbWVudChw
YXJlbnQpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7CisgICAgICAgICAgICBpZiAoY2hpbGQgPT0gaWZyYW1lU3RhY2tSb290T2JqZWN0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChjaGlsZCA9PSBwbHVn
aW5TdGFja1Jvb3RPYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFJlbmRlck9iamVjdCogZnJh
bWVWaWV3T3duZXJJRnJhbWVSZW5kZXJlcihjb25zdCBGcmFtZVZpZXcqIGZyYW1lVmlldykKK3sK
KyAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1l
bnQoKTsKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjppZnJhbWVUYWcpID8gZWxlbWVudC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7Cit9CisKK3N0
YXRpYyB2b2lkIGJ1aWxkWkluZGV4U3RhY2soUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgVmVjdG9y
PGNvbnN0IFJlbmRlck9iamVjdCo+JiB6SW5kZXhTdGFjaykKK3sKKyAgICB6SW5kZXhTdGFjay5j
bGVhcigpOworICAgIHdoaWxlIChyZW5kZXJlcikgeworICAgICAgICB6SW5kZXhTdGFjay5hcHBl
bmQocmVuZGVyZXIpOworICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6Z2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMoVmVj
dG9yPEludFJlY3Q+JiBvY2NsdXNpb25zKSBjb25zdAoreworICAgIGlmICghcGFyZW50KCkgfHwg
IXBhcmVudCgpLT5pc0ZyYW1lVmlldygpKQorICAgICAgICByZXR1cm47CisgICAgRnJhbWVWaWV3
KiBwYXJlbnRGcmFtZVZpZXcgPSB0b0ZyYW1lVmlldyhwYXJlbnQoKSk7CisKKyAgICBWZWN0b3I8
Y29uc3QgUmVuZGVyT2JqZWN0Kj4gcGx1Z2luWkluZGV4U3RhY2s7CisgICAgYnVpbGRaSW5kZXhT
dGFjayhtX3BsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCksIHBsdWdpblpJbmRleFN0YWNrKTsKKwor
ICAgIGNvbnN0IEludFJlY3QmIHBsdWdpblJlY3QgPSBmcmFtZVJlY3QoKTsKKyAgICBWZWN0b3I8
Y29uc3QgUmVuZGVyT2JqZWN0Kj4gaWZyYW1lWkluZGV4U3RhY2s7CisgICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IHBhcmVudEZyYW1lVmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAvLyBX
ZSBvbmx5IGNhcmUgYWJvdXQgRnJhbWVWaWV3cyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBG
cmFtZVZpZXdzLgorICAgICAgICBpZiAoIWNoaWxkLT5pc0ZyYW1lVmlldygpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGZy
YW1lVmlld093bmVySUZyYW1lUmVuZGVyZXIodG9GcmFtZVZpZXcoY2hpbGQuZ2V0KCkpKTsKKyAg
ICAgICAgaWYgKCFpZnJhbWVSZW5kZXJlciB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm
IChpZnJhbWVSZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9y
bXMoKS5pbnRlcnNlY3RzKHBsdWdpblJlY3QpKSB7CisgICAgICAgICAgICBidWlsZFpJbmRleFN0
YWNrKGlmcmFtZVJlbmRlcmVyLCBpZnJhbWVaSW5kZXhTdGFjayk7CisKKyAgICAgICAgICAgIGlm
IChpZnJhbWVJc0Fib3ZlUGx1Z2luKGlmcmFtZVpJbmRleFN0YWNrLCBwbHVnaW5aSW5kZXhTdGFj
aykpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJCb3gqIHJlbmRlcmVyID0gdG9SZW5k
ZXJCb3goaWZyYW1lUmVuZGVyZXIpOworICAgICAgICAgICAgICAgIEludFBvaW50IHBvaW50ID0g
cm91bmRlZEludFBvaW50KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKSk7CisgICAgICAgICAg
ICAgICAgcG9pbnQubW92ZSgtcGx1Z2luUmVjdC54KCksIC1wbHVnaW5SZWN0LnkoKSk7CisgICAg
ICAgICAgICAgICAgSW50U2l6ZSBzaXplKHJlbmRlcmVyLT53aWR0aCgpLCByZW5kZXJlci0+aGVp
Z2h0KCkpOworICAgICAgICAgICAgICAgIG9jY2x1c2lvbnMuYXBwZW5kKEludFJlY3QocG9pbnQs
IHNpemUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBQbHVn
aW5WaWV3Ojp2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKQogewogICAgIGlmICghbV9pc0luaXRpYWxp
emVkIHx8ICFtX3BsdWdpbiB8fCAhcGFyZW50KCkpCkBAIC0xMDQ3LDggKzExNDUsMTIgQEAgdm9p
ZCBQbHVnaW5WaWV3Ojp2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKQogICAgICAgICBpZiAoIWNsaXBS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNsaXBSZWN0ID0gYm91bmRzUmVjdCgpOwogICAg
IH0KLSAgICAKLSAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2Uoc2l6ZSgpLCBjbGlwUmVj
dCwgdHJhbnNmb3JtKTsKKworICAgIFZlY3RvcjxJbnRSZWN0PiBvY2NsdXNpb25zOworICAgIGlm
IChtX3BsdWdpbi0+aXNXaW5kb3dlZCgpKQorICAgICAgICBnZXRPY2NsdXNpb25SZWN0c0J5SUZy
YW1lcyhvY2NsdXNpb25zKTsKKworICAgIG1fcGx1Z2luLT5nZW9tZXRyeURpZENoYW5nZShzaXpl
KCksIGNsaXBSZWN0LCB0cmFuc2Zvcm0sIG9jY2x1c2lvbnMpOwogfQogCiB2b2lkIFBsdWdpblZp
ZXc6OnZpZXdWaXNpYmlsaXR5RGlkQ2hhbmdlKCkKQEAgLTE2MTAsOSArMTcxMiw5IEBAIHVpbnQ2
NF90IFBsdWdpblZpZXc6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpCiAgICAgcmV0dXJuIHdpbmRv
d0lEOwogfQogCi12b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit2b2lkIFBsdWdpblZpZXc6OndpbmRv
d2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCkKIHsKLSAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShmcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCkpOworICAgIG1fd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZy
YW1lUmVjdCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lEKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
Nzc5NjMzNC4uMzlhNjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC0yMTIsNyArMjEyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7CiAjaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShYMTEpCiAgICAgdmlydHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRJbml0aWFsaXplUGx1Z2luKCk7CkBAIC0yMjUsNiArMjI1LDExIEBAIHBy
aXZhdGU6CiAKICAgICBPd25QdHI8V2ViRXZlbnQ+IGNyZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1v
dXNlRXZlbnQqKSBjb25zdDsKIAorICAgIC8vIFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRo
YXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24gYnkgdGhlIHBsdWdpbiAoImN1dG91dHMiKS4gVGhp
cyBoZWxwcyBpbXBsZW1lbnQgdGhlICJpZnJhbWUgc2hpbSIKKyAgICAvLyB0ZWNobmlxdWUgb2Yg
b3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdpbiB3aXRoIGNvbnRlbnQgZnJvbSB0aGUgcGFnZS4g
SWZyYW1lIGVsZW1lbnRzIHNob3VsZCBvY2NsdWRlIHBsdWdpbnMgd2hlbiB0aGV5IG9jY3VyCisg
ICAgLy8gaGlnaGVyIGluIHRoZSBzdGFja2luZyBvcmRlci4KKyAgICB2b2lkIGdldE9jY2x1c2lv
blJlY3RzQnlJRnJhbWVzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNvbnN0OworCiAgICAg
UmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAg
UmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwo=
</data>
<flag name="review"
          id="254552"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230285</attachid>
            <date>2014-04-28 01:37:10 -0700</date>
            <delta_ts>2016-03-18 04:11:50 -0700</delta_ts>
            <desc>Address review comments and try to fix mac build</desc>
            <filename>wk2-iframe-shim.diff</filename>
            <type>text/plain</type>
            <size>34051</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhYzhkYjcyLi4yYjU3OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIg
QEAKKzIwMTQtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdp
bmRvd2VkIHBsdWdpbnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSXQgYWxsb3dzIHRvIHNob3cgaWZyYW1lcyBvbiB0b3Agb2YgYSB3
aW5kb3dlZCBwbHVnaW4uIFRoZQorICAgICAgICBpbXBsZW1lbnRhdG9uIGlzIGJhc2VkIG9uIGNo
cm9taXVtIG9uZSwgaXQgY2hlY2tzIHRoZSBhcmVhcyBvZiB0aGUKKyAgICAgICAgd2luZG93ZWQg
cGx1Z2lucyB0aGF0IGFyZSBvY2NsdWRlZCBieSBhbiBpZnJhbWUuIFRoZSBvY2NsdXNpb24KKyAg
ICAgICAgcmVjdGFuZ2xlcyBhcmUgc2VudCB0byB0aGUgVUkgcHJvY2VzcyB0byBwcm9wZXJseSBt
YXNrIHRoZSBwbHVnaW4KKyAgICAgICAgY29udGFpbmVyIHdpbmRvdy4KKyAgICAgICAgVGhpcyBp
cyBjb3ZlcmVkIGJ5IHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwuCisKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBBZGQgb2NjbHVzaW9ucyBw
YXJhbWV0ZXIuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dl
ZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBTdWJzdHJhY3QKKyAgICAgICAgdGhlIG9j
Y2x1c2lvbiByZWN0YW5nbGVzIGZyb20gdGhlIHBsdWdpbiBjb250YWluZXIgd2luZG93IGNsaXAg
cmVnaW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc1dpbmRvd2VkKTog
UmV0dXJuIHdoZXRoZXIgdGhlIHBsdWdpbiBpcworICAgICAgICB3aW5kb3dlZCBvciBub3QuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZSk6IFNhdmUg
dGhlIHBhc3NlZCBpbiBvY2NsdXNpb25zLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSk6IFBhc3MgYWxzbyB0aGUKKyAg
ICAgICAgb2NjbHVzaW9ucyB0byB0aGUgY29udHJvbGxlci4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOiBBZGQgaXNXaW5kb3dlZCgpIGltcGxlbWVudGF0aW9u
LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgbWV0aG9kIGFuZAorICAg
ICAgICBvY2NsdXNpb25zIHBhcmFtZXRlciB0byBnZW9tZXRyeURpZENoYW5nZSgpLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6IEFkZCBvY2NsdXNpb25z
IHBhcmFtZXRlcgorICAgICAgICB0byBnZW9tZXRyeURpZENoYW5nZSgpLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb3h5OjpQbHVnaW5Qcm94eSk6IEluaXRpYWxpemUgbV9pc1dpbmRvd2VkIHRvIGZhbHNlLgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aXNXaW5kb3dlZCk6IFJldHVybiB3aGV0aGVy
IHRoZSBwbHVnaW4gaXMKKyAgICAgICAgd2luZG93ZWQgb3Igbm90LgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBTYXZlIHRoZSBwYXNzZWQgaW4gb2Nj
bHVzaW9ucy4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRh
aW5lcik6IFNldCBtX2lzV2luZG93ZWQgdG8KKyAgICAgICAgdHJ1ZSBpZiBhIHBsdWdpbiBjb250
YWluZXIgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBQYXNzIHRoZQorICAgICAgICBvY2NsdXNp
b25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNz
YWdlcy5pbjogQWRkIG9jY2x1c2lvbnMKKyAgICAgICAgcGFyYW1ldGVyIHRvIFdpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UgbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlmcmFtZUlzQWJvdmVQbHVnaW4p
OiBIZWxwZXIgc3RhdGljIGZ1bmN0aW9uIHRvIGNoZWNrIGlmCisgICAgICAgIHRoZSBpZnJhbWUg
aXMgYWJvdmUgdGhlIHBsdWdpbi4KKyAgICAgICAgKFdlYktpdDo6ZnJhbWVWaWV3T3duZXJJRnJh
bWVSZW5kZXJlcik6IFJldHVybiB0aGUgb3duZXIgZWxlbWVudAorICAgICAgICByZW5kZXJlciBv
ZiB0aGUgZ2l2ZW4gRnJhbWVWaWV3IGlmIGl0J3MgYW4gaWZyYW1lLgorICAgICAgICAoV2ViS2l0
OjpidWlsZFpJbmRleFN0YWNrKTogSGVscGVyIGZ1bmN0aW9uIHRvIGJ1aWxkIHRoZSByZW5kZXIK
KyAgICAgICAgc3RhY2sgb2YgYSBnaXZlbiByZW5kZXJlci4KKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6Z2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMpOiBSZXR1cm5zIHRoZSBzZXQKKyAg
ICAgICAgb2YgYXJlYXMgb2YgdGhlIHBsdWdpbiB0aGF0IGFyZSBvY2NsdWRlZCBieSBhbiBpZnJh
bWUuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnZpZXdHZW9tZXRyeURpZENoYW5nZSk6
IENhbGwKKyAgICAgICAgZ2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMoKSBmb3Igd2luZG93ZWQg
cGx1Z2lucyBhbmQgcGFzcyB0aGUKKyAgICAgICAgb2NjbHVzaW9ucyB0byB0aGUgcGx1Z2luLgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKTogQWRkCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisKIDIwMTQtMDQtMjggIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEdPYmplY3QgaW50
cm9zcGVjdGlvbiBsaW5rcyB0byBpbnN0YWxsZWQgbGlicyB3aGVuIHVzaW5nIGpoYnVpbGQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcAppbmRleCAzZGVkN2Q5Li5hNzI2Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC00MDQsNyAr
NDA0LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmZyYW1lRGlkRmFpbCh1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fcGx1Z2luLT5mcmFtZURpZEZh
aWwocmVxdWVzdElELCB3YXNDYW5jZWxsZWQpOwogfQogCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmll
d1RyYW5zZm9ybSwgZmxvYXQgY29udGVudHNTY2FsZUZhY3RvciwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclBy
b3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMsIGZsb2F0IGNvbnRl
bnRzU2NhbGVGYWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5nU3Rv
cmVIYW5kbGUpCiB7CiAgICAgQVNTRVJUKG1fcGx1Z2luKTsKIApAQCAtNDIyLDcgKzQyMiw3IEBA
IHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRT
aXplJiBwbHVnaW5TaXplLCBjb25zdCBJCiAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlSGFuZGxlKTsKICAgICB9CiAKLSAgICBtX3Bs
dWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2UocGx1Z2luU2l6ZSwgY2xpcFJlY3QsIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pOworICAgIG1fcGx1Z2luLT5nZW9tZXRyeURpZENoYW5nZShwbHVnaW5T
aXplLCBjbGlwUmVjdCwgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgb2NjbHVzaW9ucyk7CiB9
CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKQEAgLTYwNSw5ICs2MDUsOSBA
QCB1aW50NjRfdCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigp
CiAgICAgcmV0dXJuIHdpbmRvd0lEOwogfQogCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3ZvaWQgUGx1Z2lu
Q29udHJvbGxlclByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IElu
dFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpCiB7Ci0gICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBs
dWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIHdpbmRvd0lEKSwgbV9w
bHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJh
bWVSZWN0LCBjbGlwUmVjdCwgb2NjbHVzaW9ucywgd2luZG93SUQpLCBtX3BsdWdpbkluc3RhbmNl
SUQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDY1ZDkwMmIuLjMzYTY2MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aApAQCAtMTE1LDEzICsxMTUsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdW5wcm90
ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEp
CiAgICAgdmlydHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50
NjRfdCB3aW5kb3dJRCk7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2Ns
dXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKICAgICAKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzLgogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCk7Ci0gICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBm
bG9hdCBjb250ZW50c1NjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
YmFja2luZ1N0b3JlSGFuZGxlKTsKKyAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFu
c2Zvcm0sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucywgZmxvYXQg
Y29udGVudHNTY2FsZUZhY3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tp
bmdTdG9yZUhhbmRsZSk7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxT
dHJpbmcsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lk
IHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2YjZhMzA4
Li4zNGVlZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBA
QAogCiBtZXNzYWdlcyAtPiBQbHVnaW5Db250cm9sbGVyUHJveHkgTGVnYWN5UmVjZWl2ZXIgewog
ICAgICMgU2VudCB3aGVuIHRoZSBwbHVnLWluIGdlb21ldHJ5IGNoYW5nZXMuCi0gICAgR2VvbWV0
cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50U2l6ZSBwbHVnaW5TaXplLCBXZWJDb3JlOjpJbnRSZWN0
IGNsaXBSZWN0LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSwgZmxvYXQgc2NhbGVGYWN0b3IsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
YmFja2luZ1N0b3JlSGFuZGxlKQorICAgIEdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFNp
emUgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIFZlY3RvcjxXZWJDb3JlOjpJbnRS
ZWN0PiBvY2NsdXNpb25zLCBmbG9hdCBzY2FsZUZhY3RvciwgV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBiYWNraW5nU3RvcmVIYW5kbGUpCiAKICAgICAjIFNlbnQgd2hlbiBhIGZyYW1l
IGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIEZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCByZXF1ZXN0SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
YmVjMGQ4NS4uZjZjMzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTM4MCw3ICsxMzgwLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMVUdJTl9BUkNISVRFQ1RV
UkUoWDExKQogICAgIHZvaWQgY3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJ
RCk7Ci0gICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3Qs
IHVpbnQ2NF90IHdpbmRvd0lEKTsKKyAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNp
b25zLCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc05leHRR
dWV1ZWRXaGVlbEV2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzMTI5YmUyLi5hNWJkNDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxMyw3
ICszMTMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBMVUdJTl9BUkNISVRF
Q1RVUkUoWDExKQogICAgICMgWDExIHdpbmRvd2VkIHBsdWdpbiBtZXNzYWdlcwogICAgIENyZWF0
ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJRCkKLSAgICBXaW5kb3dlZFBs
dWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3Jl
OjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5kb3dlZFBsdWdp
bkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJ
bnRSZWN0IGNsaXBSZWN0LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2NjbHVzaW9ucywgdWlu
dDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCBiZDBiYzYx
Li4xNWQ0NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
Z2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVQ
bHVnaW5Db250YWluZXIodWludDY0X3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdWludDY0X3QpCit2b2lk
IFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYsIHVpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5k
ZXggOGE1Mzk4NS4uYTUwOTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQogICAgIHBsdWdp
bldpbmRvd01hcCgpLnNldCh3aW5kb3dJRCwgc29ja2V0KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qg
d2luZG93SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lv
bnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewogICAgIEd0a1dpZGdldCogcGx1Z2luID0gcGx1Z2lu
V2luZG93TWFwKCkuZ2V0KHdpbmRvd0lEKTsKICAgICBpZiAoIXBsdWdpbikKQEAgLTExMSw2ICsx
MTEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWUKICAgICBpZiAoZ3RrX3dpZGdldF9nZXRf
cmVhbGl6ZWQocGx1Z2luKSkgewogICAgICAgICBHZGtSZWN0YW5nbGUgY2xpcCA9IGNsaXBSZWN0
OwogICAgICAgICBjYWlyb19yZWdpb25fdCogY2xpcFJlZ2lvbiA9IGNhaXJvX3JlZ2lvbl9jcmVh
dGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogb2Nj
bHVzaW9ucykgeworICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIG9jY2x1c2lvbiA9IHJlY3Q7Cisg
ICAgICAgICAgICBjYWlyb19yZWdpb25fc3VidHJhY3RfcmVjdGFuZ2xlKGNsaXBSZWdpb24sICZv
Y2NsdXNpb24pOworICAgICAgICB9CiAgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29tYmluZV9y
ZWdpb24oZ3RrX3dpZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAsIDApOwog
ICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAppbmRleCBlOWM2ODY2Li4yZTExM2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKQEAgLTcyNCwxNiArNzI0LDIxIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46Omlz
VHJhbnNwYXJlbnQoKQogICAgIHJldHVybiBtX2lzVHJhbnNwYXJlbnQ7CiB9CiAKK2Jvb2wgTmV0
c2NhcGVQbHVnaW46OmlzV2luZG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzV2luZG93
ZWQ7Cit9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzV2hlZWxFdmVudHMoKQogewogICAg
IHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVp
cmtzOjpXYW50c1doZWVsRXZlbnRzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0
cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkK
K3ZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBs
dWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVz
aW9ucykKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogCi0gICAgaWYgKHBsdWdpblNpemUg
PT0gbV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAo
cGx1Z2luU2l6ZSA9PSBtX3BsdWdpblNpemUgJiYgbV9jbGlwUmVjdCA9PSBjbGlwUmVjdCAmJiBt
X3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSAm
JiBtX29jY2x1c2lvbnMgPT0gb2NjbHVzaW9ucykgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRv
LgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzQ3LDYgKzc1Miw3IEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNv
bnN0IEludFJlY3QmCiAgICAgbV9wbHVnaW5TaXplID0gcGx1Z2luU2l6ZTsKICAgICBtX2NsaXBS
ZWN0ID0gY2xpcFJlY3Q7CiAgICAgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2lu
VG9Sb290Vmlld1RyYW5zZm9ybTsKKyAgICBtX29jY2x1c2lvbnMgPSBvY2NsdXNpb25zOwogCiAg
ICAgSW50UG9pbnQgZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wbHVn
aW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50KEludFBvaW50KCkpOwogICAgIG1fZnJhbWVS
ZWN0SW5XaW5kb3dDb29yZGluYXRlcyA9IEludFJlY3QoZnJhbWVSZWN0TG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzLCBtX3BsdWdpblNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBh
ZDI3NjdkLi5jNmY4Y2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTg0LDggKzE4NCw5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpOwog
I2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzVHJhbnNwYXJlbnQoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB3YW50c1do
ZWVsRXZlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pOworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
bGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpOwog
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCk7CiAgICAgdmlydHVhbCB2b2lk
IGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwg
dm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7
CkBAIC0yOTIsNiArMjkzLDggQEAgcHJpdmF0ZToKICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0IGNh
biBiZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1p
biBjb29yZGluYXRlcy4KICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtOwogCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fb2NjbHVz
aW9uczsKKwogICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoZXNlLgogICAgIFdlYkNvcmU6Oklu
dFJlY3QgbV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IGRiNGJmMjQuLmVjNmFkOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgICAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9X
X1hJRChndGtfcGx1Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2lu
V2lkZ2V0KSkpKTsKICNlbmRpZgotICAgICAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBtX2NsaXBS
ZWN0LCB3aW5kb3dJRCk7CisgICAgICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZShtX2ZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIG1fY2xpcFJlY3Qs
IG1fb2NjbHVzaW9ucywgd2luZG93SUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRl
eCA2YTdlOWIwLi5hOTIyOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTExNSw4ICsxMTUsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFu
c2Zvcm0pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
bGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9h
dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDViMzY3YTIuLmQxYTRlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBA
IC0xMTkwLDcgKzExOTAsNyBAQCBJbnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBj
b25zdAogICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5jbG9zaW5nSW50
UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpn
ZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKQordm9p
ZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
IGNvbnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCiB7CiAgICAgaWYgKHNpemUoKSA9PSBw
bHVnaW5TaXplICYmIHBsdWdpblZpZXcoKS0+cGFnZVNjYWxlRmFjdG9yKCkgPT0gW21fcGRmTGF5
ZXJDb250cm9sbGVyIGNvbnRlbnRTY2FsZUZhY3Rvcl0pCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBjNTRhNGExLi4xM2Q5
ODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0x
MzQsMTIgKzEzNCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVn
LWluIGlzIHRyYW5zcGFyZW50IG9yIG5vdC4KICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc3BhcmVu
dCgpID0gMDsKIAorICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcGx1Zy1pbiBpcyB3aW5kb3dl
ZCBvciBub3QuCisgICAgdmlydHVhbCBib29sIGlzV2luZG93ZWQoKSBjb25zdCA9IDA7CisKICAg
ICAvLyBSZXR1cm5zIHdoZXRoZXIgd2Ugc2hvdWxkIHNlbmQgd2hlZWwgZXZlbnRzIHRvIHRoaXMg
cGx1Zy1pbi4KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpID0gMDsKIAogICAg
IC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgaXRzIGdlb21ldHJ5IGhhcyBjaGFuZ2VkLiBUaGUg
Y2xpcCByZWN0IGlzIGluIHBsdWctaW4gY29vcmRpbmF0ZXMsIGFuZCB0aGUgYWZmaW5lIHRyYW5z
Zm9ybSBjYW4gYmUgdXNlZAogICAgIC8vIHRvIGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRp
bmF0ZXMgdG8gcGx1Zy1pbiBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1
Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURp
ZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVn
aW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9j
Y2x1c2lvbnMpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgaXQgaGFzIGJl
ZW4gZXhwbGljaXRseSBoaWRkZW4gb3Igc2hvd24uIChOb3RlIHRoYXQgdGhpcyBpcyBub3QgY2Fs
bGVkIHdoZW4gdGhlIHBsdWctaW4gYmVjb21lcyBvYnNjdXJlZCBmcm9tIHZpZXcgb24gc2NyZWVu
LikKICAgICB2aXJ0dWFsIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZSgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmlu
ZGV4IDc5Y2NhNTkuLjZlYTA0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1Ymxp
YzoKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICAvLyBDcmVhdGUgYSBwbHVnaW4g
Y29udGFpbmVyIGZvciB3aW5kb3dlZCBwbHVnaW5zCiAgICAgdmlydHVhbCB1aW50NjRfdCBjcmVh
dGVQbHVnaW5Db250YWluZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdp
bmRvd0lEKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIENhbGxlZCB3aGVuIHRoZSBhIHBsdWctaW4g
aW5zdGFuY2UgaXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLCBlaXRoZXIgc3luY2hyb25vdXNs
eSBvciBhc3luY2hyb25vdXNseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IDEyNTY5ZjQuLjgxODZhNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtNzEs
NiArNzEsNyBAQCBQbHVnaW5Qcm94eTo6UGx1Z2luUHJveHkodWludDY0X3QgcGx1Z2luUHJvY2Vz
c1Rva2VuLCBib29sIGlzUmVzdGFydGVkUHJvY2VzcykKICAgICAsIG1fcmVtb3RlTGF5ZXJDbGll
bnRJRCgwKQogICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbihmYWxz
ZSkKICAgICAsIG1faXNSZXN0YXJ0ZWRQcm9jZXNzKGlzUmVzdGFydGVkUHJvY2VzcykKKyAgICAs
IG1faXNXaW5kb3dlZChmYWxzZSkKIHsKIH0KIApAQCAtMjU3LDYgKzI1OCwxMSBAQCBib29sIFBs
dWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wg
UGx1Z2luUHJveHk6OmlzV2luZG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzV2luZG93
ZWQ7Cit9CisKIGJvb2wgUGx1Z2luUHJveHk6OndhbnRzV2hlZWxFdmVudHMoKQogewogICAgIHJl
dHVybiBtX3dhbnRzV2hlZWxFdmVudHM7CkBAIC0yODMsMTIgKzI4OSwxMiBAQCB2b2lkIFBsdWdp
blByb3h5OjpnZW9tZXRyeURpZENoYW5nZSgpCiAgICAgICAgIG1fcGx1Z2luQmFja2luZ1N0b3Jl
Q29udGFpbnNWYWxpZERhdGEgPSBmYWxzZTsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpHZW9tZXRy
eURpZENoYW5nZShtX3BsdWdpblNpemUsIG1fY2xpcFJlY3QsIG1fcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgY29udGVudHNTY2FsZUZhY3RvcigpLCBwbHVnaW5CYWNraW5nU3RvcmVIYW5kbGUp
LCBtX3BsdWdpbkluc3RhbmNlSUQsIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpHZW9tZXRyeURpZENoYW5nZShtX3BsdWdpblNp
emUsIG1fY2xpcFJlY3QsIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgbV9vY2NsdXNpb25z
LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdpbkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1
Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkpOwogfQogCi12b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJ
bnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKQordm9pZCBQbHVnaW5Qcm94eTo6
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKQogewotICAg
IGlmIChwbHVnaW5TaXplID09IG1fcGx1Z2luU2l6ZSAmJiBtX2NsaXBSZWN0ID09IGNsaXBSZWN0
ICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtKSB7CisgICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3Qg
PT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0gJiYgbV9vY2NsdXNpb25zID09IG9jY2x1c2lvbnMpIHsKICAgICAgICAg
Ly8gTm90aGluZyB0byBkby4KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI5Niw2ICszMDIs
NyBAQCB2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBw
bHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbAogICAgIG1fcGx1Z2luU2l6ZSA9IHBsdWdpblNp
emU7CiAgICAgbV9jbGlwUmVjdCA9IGNsaXBSZWN0OwogICAgIG1fcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07CisgICAgbV9vY2NsdXNpb25zID0g
b2NjbHVzaW9uczsKIAogICAgIGdlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9CkBAIC02NzQsMTEgKzY4
MSwxMiBAQCB2b2lkIFBsdWdpblByb3h5OjpzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYg
c3RhdHVzYmFyVGV4dCkKIHZvaWQgUGx1Z2luUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1
aW50NjRfdCYgd2luZG93SUQpCiB7CiAgICAgd2luZG93SUQgPSBjb250cm9sbGVyKCktPmNyZWF0
ZVBsdWdpbkNvbnRhaW5lcigpOworICAgIG1faXNXaW5kb3dlZCA9IHdpbmRvd0lEOwogfQogCi12
b2lkIFBsdWdpblByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QsIHVpbnQ2NF90IHdpbmRvd0lEKQordm9pZCBQbHVnaW5Qcm94eTo6d2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1
c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewotICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQ
bHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCk7Cisg
ICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVj
dCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lEKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDRmNTI3
OWMuLjk4MDY4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oCkBAIC04Myw4ICs4Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQbGF0
Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzVHJh
bnNwYXJlbnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pOworICAgIHZpcnR1YWwg
dm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpOwogICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlk
Q2hhbmdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVx
dWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgIHZvaWQgY3JlYXRlUGx1
Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCk7Ci0gICAgdm9pZCB3aW5kb3dlZFBsdWdp
bkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyAgICB2
b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCk7CiAj
ZW5kaWYKIAogICAgIGJvb2wgY2FuSW5pdGlhbGl6ZUFzeW5jaHJvbm91c2x5KCkgY29uc3Q7CkBA
IC0xOTUsNiArMTk2LDggQEAgcHJpdmF0ZToKICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0IGNhbiBi
ZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1pbiBj
b29yZGluYXRlcy4KICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RW
aWV3VHJhbnNmb3JtOwogCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fb2NjbHVzaW9u
czsKKwogICAgIC8vIFRoaXMgaXMgdGhlIGJhY2tpbmcgc3RvcmUgdGhhdCB3ZSBwYWludCB3aGVu
IHdlJ3JlIHRvbGQgdG8gcGFpbnQuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iYWNr
aW5nU3RvcmU7CiAKQEAgLTIyNCw2ICsyMjcsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBi
b29sIG1faXNSZXN0YXJ0ZWRQcm9jZXNzOworCisgICAgYm9vbCBtX2lzV2luZG93ZWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgppbmRleCA0MTdlMTdlLi5k
YzBkZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCkBAIC03Miw3ICs3Miw3IEBAIG1lc3NhZ2VzIC0+
IFBsdWdpblByb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBDcmVhdGVQbHVnaW5Db250YWluZXIo
KSAtPiAodWludDY0X3Qgd2luZG93SUQpCiAKICAgICAjIFVwZGF0ZSBnZW9tZXRyeSBvZiB3aW5k
b3dlZCBwbHVnaW4gd2lkZ2V0Ci0gICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShX
ZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpCisgICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJD
b3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogI2VuZGlm
CiAKICAgICAjIFRlbGxzIHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIHBsdWctaW4gd2FzIHN1Y2Nl
c3NmdWxseSBpbml0aWFsaXplZCBhc3luY2hyb25vdXNseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDczZmViYzIuLjRhYWVlNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMDE5LDYgKzEwMjAsMTA0IEBAIGJvb2wgUGx1Z2luVmlldzo6dHJhbnNmb3Jtc0FmZmVj
dEZyYW1lUmVjdCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBpZnJhbWVJ
c0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1lWklu
ZGV4U3RhY2ssIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1Z2luWkluZGV4
U3RhY2spCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZnJhbWVaSW5kZXhTdGFjay5z
aXplKCkgJiYgaSA8IHBsdWdpblpJbmRleFN0YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8v
IFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiBXZSB3YW50IHRvIGl0ZXJh
dGUgcm9vdC1kb3dud2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20gdGhlIGVuZC4KKyAg
ICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVTdGFja1Jvb3RPYmplY3QgPSBpZnJhbWVa
SW5kZXhTdGFja1tpZnJhbWVaSW5kZXhTdGFjay5zaXplKCkgLSAxIC0gaV07CisgICAgICAgIGNv
bnN0IFJlbmRlck9iamVjdCogcGx1Z2luU3RhY2tSb290T2JqZWN0ID0gcGx1Z2luWkluZGV4U3Rh
Y2tbcGx1Z2luWkluZGV4U3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBpZiAoaWZyYW1l
U3RhY2tSb290T2JqZWN0ID09IHBsdWdpblN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUgc3RhY2sgdGhh
dCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBqdXN0IGJlbG93
IHRoZSBsb3dlc3QgY29tbWVudCBhbmNlc3Rvci4KKyAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNo
IHNob3VsZCBiZSBvbiB0b3AuCisgICAgICAgIGlmIChpZnJhbWVTdGFja1Jvb3RPYmplY3QtPnN0
eWxlKCkuekluZGV4KCkgPiBwbHVnaW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkuekluZGV4KCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGlmcmFtZVN0YWNrUm9vdE9i
amVjdC0+c3R5bGUoKS56SW5kZXgoKSA8IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS56
SW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBJZiB0aGUg
cGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFja3MgYmVoaW5k
IHRoZSBpZnJhbWUuIFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBJ
RS4KKyAgICAgICAgaWYgKHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS5wb3NpdGlvbigp
ID09IFN0YXRpY1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAvLyBUaGUgMCd0aCBlbGVtZW50cyBv
ZiB0aGVzZSBSZW5kZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2luIG5vZGUgYW5k
IHRoZSBpZnJhbWUuCisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBsdWdpblJlbmRl
ck9iamVjdCA9IHBsdWdpblpJbmRleFN0YWNrWzBdOworICAgICAgICAgICAgY29uc3QgUmVuZGVy
T2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVaSW5kZXhTdGFja1swXTsKKworICAg
ICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSA+IGlmcmFt
ZVJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEluc3BlY3QgdGhlIGRvY3VtZW50IG9yZGVyLiBMYXRlciBvcmRlciBtZWFucyBoaWdoZXIgc3Rh
Y2tpbmcuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0gaWZyYW1lU3RhY2tS
b290T2JqZWN0LT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcGx1Z2luU3RhY2tSb290T2Jq
ZWN0LT5wYXJlbnQoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIGNoaWxk
ID0gdG9SZW5kZXJFbGVtZW50KHBhcmVudCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZCA9PSBpZnJhbWVT
dGFja1Jvb3RPYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKGNoaWxkID09IHBsdWdpblN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgUmVuZGVyT2JqZWN0KiBmcmFtZVZpZXdPd25lcklGcmFtZVJlbmRlcmVyKGNvbnN0IEZyYW1l
VmlldyogZnJhbWVWaWV3KQoreworICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gZnJhbWVWaWV3
LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+
cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZWxlbWVu
dC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykgPyBlbGVtZW50LT5yZW5kZXJlcigp
IDogbnVsbHB0cjsKK30KKworc3RhdGljIHZvaWQgYnVpbGRaSW5kZXhTdGFjayhSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIHpJbmRleFN0YWNrKQor
eworICAgIHpJbmRleFN0YWNrLmNsZWFyKCk7CisgICAgd2hpbGUgKHJlbmRlcmVyKSB7CisgICAg
ICAgIHpJbmRleFN0YWNrLmFwcGVuZChyZW5kZXJlcik7CisgICAgICAgIHJlbmRlcmVyID0gcmVu
ZGVyZXItPnBhcmVudCgpOworICAgIH0KK30KKwordm9pZCBQbHVnaW5WaWV3OjpnZXRPY2NsdXNp
b25SZWN0c0J5SUZyYW1lcyhWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMpIGNvbnN0Cit7Cisg
ICAgaWYgKCFwYXJlbnQoKSB8fCAhcGFyZW50KCktPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldyA9IHRvRnJhbWVWaWV3KHBhcmVu
dCgpKTsKKworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBwbHVnaW5aSW5kZXhTdGFj
azsKKyAgICBidWlsZFpJbmRleFN0YWNrKG1fcGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSwgcGx1
Z2luWkluZGV4U3RhY2spOworCisgICAgY29uc3QgSW50UmVjdCYgcGx1Z2luUmVjdCA9IGZyYW1l
UmVjdCgpOworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBpZnJhbWVaSW5kZXhTdGFj
azsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50RnJhbWVWaWV3LT5jaGlsZHJl
bigpKSB7CisgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBGcmFtZVZpZXdzIGJlY2F1c2Ug
aWZyYW1lcyBzaG93IHVwIGFzIEZyYW1lVmlld3MuCisgICAgICAgIGlmICghY2hpbGQtPmlzRnJh
bWVWaWV3KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZW5kZXJPYmplY3Qq
IGlmcmFtZVJlbmRlcmVyID0gZnJhbWVWaWV3T3duZXJJRnJhbWVSZW5kZXJlcih0b0ZyYW1lVmll
dyhjaGlsZC5nZXQoKSkpOworICAgICAgICBpZiAoIWlmcmFtZVJlbmRlcmVyIHx8IGlmcmFtZVJl
bmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpLmludGVyc2VjdHMocGx1Z2luUmVjdCkpIHsKKyAgICAg
ICAgICAgIGJ1aWxkWkluZGV4U3RhY2soaWZyYW1lUmVuZGVyZXIsIGlmcmFtZVpJbmRleFN0YWNr
KTsKKworICAgICAgICAgICAgaWYgKGlmcmFtZUlzQWJvdmVQbHVnaW4oaWZyYW1lWkluZGV4U3Rh
Y2ssIHBsdWdpblpJbmRleFN0YWNrKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJv
eCogcmVuZGVyZXIgPSB0b1JlbmRlckJveChpZnJhbWVSZW5kZXJlcik7CisgICAgICAgICAgICAg
ICAgSW50UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQocmVuZGVyZXItPmxvY2FsVG9BYnNv
bHV0ZSgpKTsKKyAgICAgICAgICAgICAgICBwb2ludC5tb3ZlKC1wbHVnaW5SZWN0LngoKSwgLXBs
dWdpblJlY3QueSgpKTsKKyAgICAgICAgICAgICAgICBJbnRTaXplIHNpemUocmVuZGVyZXItPndp
ZHRoKCksIHJlbmRlcmVyLT5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgb2NjbHVzaW9ucy5h
cHBlbmQoSW50UmVjdChwb2ludCwgc2l6ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCiB2b2lkIFBsdWdpblZpZXc6OnZpZXdHZW9tZXRyeURpZENoYW5nZSgpCiB7CiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luIHx8ICFwYXJlbnQoKSkKQEAgLTEw
NDcsOCArMTE0NiwxMiBAQCB2b2lkIFBsdWdpblZpZXc6OnZpZXdHZW9tZXRyeURpZENoYW5nZSgp
CiAgICAgICAgIGlmICghY2xpcFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgY2xpcFJlY3Qg
PSBib3VuZHNSZWN0KCk7CiAgICAgfQotICAgIAotICAgIG1fcGx1Z2luLT5nZW9tZXRyeURpZENo
YW5nZShzaXplKCksIGNsaXBSZWN0LCB0cmFuc2Zvcm0pOworCisgICAgVmVjdG9yPEludFJlY3Q+
IG9jY2x1c2lvbnM7CisgICAgaWYgKG1fcGx1Z2luLT5pc1dpbmRvd2VkKCkpCisgICAgICAgIGdl
dE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKG9jY2x1c2lvbnMpOworCisgICAgbV9wbHVnaW4tPmdl
b21ldHJ5RGlkQ2hhbmdlKHNpemUoKSwgY2xpcFJlY3QsIHRyYW5zZm9ybSwgb2NjbHVzaW9ucyk7
CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6dmlld1Zpc2liaWxpdHlEaWRDaGFuZ2UoKQpAQCAtMTYx
MCw5ICsxNzEzLDkgQEAgdWludDY0X3QgUGx1Z2luVmlldzo6Y3JlYXRlUGx1Z2luQ29udGFpbmVy
KCkKICAgICByZXR1cm4gd2luZG93SUQ7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQ
bHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3Zv
aWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0
LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQog
ewotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXaW5kb3dlZFBs
dWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIHdpbmRvd0lEKSk7Cisg
ICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgb2NjbHVzaW9ucywgd2luZG93
SUQpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaAppbmRleCA0ZGY1YmRkLi5lODg3MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24o
KTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcigpOwotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lE
KTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKTsKQEAg
LTIyNiw2ICsyMjYsMTEgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJFdmVu
dD4gY3JlYXRlV2ViRXZlbnQoV2ViQ29yZTo6TW91c2VFdmVudCopIGNvbnN0OwogCisgICAgLy8g
UmV0dXJuIGEgc2V0IG9mIHJlY3RhbmdsZXMgdGhhdCBzaG91bGQgbm90IGJlIG92ZXJkcmF3biBi
eSB0aGUgcGx1Z2luICgiY3V0b3V0cyIpLiBUaGlzIGhlbHBzIGltcGxlbWVudCB0aGUgImlmcmFt
ZSBzaGltIgorICAgIC8vIHRlY2huaXF1ZSBvZiBvdmVybGF5aW5nIGEgd2luZG93ZWQgcGx1Z2lu
IHdpdGggY29udGVudCBmcm9tIHRoZSBwYWdlLiBJZnJhbWUgZWxlbWVudHMgc2hvdWxkIG9jY2x1
ZGUgcGx1Z2lucyB3aGVuIHRoZXkgb2NjdXIKKyAgICAvLyBoaWdoZXIgaW4gdGhlIHN0YWNraW5n
IG9yZGVyLgorICAgIHZvaWQgZ2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMoVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JikgY29uc3Q7CisKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFBsdWdJbkVs
ZW1lbnQ+IG1fcGx1Z2luRWxlbWVudDsKICAgICBSZWZQdHI8UGx1Z2luPiBtX3BsdWdpbjsKICAg
ICBXZWJQYWdlKiBtX3dlYlBhZ2U7Cg==
</data>
<flag name="review"
          id="254668"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274403</attachid>
            <date>2016-03-18 04:11:50 -0700</date>
            <delta_ts>2016-03-18 04:18:22 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-iframe-shim.diff</filename>
            <type>text/plain</type>
            <size>48074</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjQxZDExLi41ZGM4OTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMt
MTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdpbmRvd2VkIHBsdWdp
bnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnJpbmcgYmFjayBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIGFuZCBza2lwIGl0IGlu
IGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgZXhjZXB0IEdUSysuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTE3ICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdFQjog
Vm9pY2VPdmVyIGRvZXMgbm90IGFubm91bmNlIHNvbWUgV0FJLUFSSUEgZG9jdW1lbnQgc3RydWN0
dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzU3MDAyZS4uNDM0ZWI4MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01MSw2ICs1MSw5IEBAIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVz
dC13aXRoLWNsaWVudC1wcm92aWRlZC1odHRwLWJvZHkuaHRtbCBbIFNraXAgXQogZmFzdC9oYXJu
ZXNzL3VpLXNpZGUtc2NyaXB0cy5odG1sIFsgU2tpcCBdCiBmYXN0L2hhcm5lc3MvY29uY3VycmVu
dC11aS1zaWRlLXNjcmlwdHMuaHRtbCBbIFNraXAgXQogCisjIE9ubHkgR1RLKyBzdXBwb3J0cyBp
ZnJhbWUgc2hpbXMuCitwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIFsgU2tpcCBdCisKICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIHRl
c3RzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMTIyMmQ1Li4yOTA5MjM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcwNSwzICsyNzA1LDUg
QEAgZmFzdC9tdWx0aWNvbC9tdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVyLWZvci1pbnB1
dC5odG1sIFsgUGFzcyBdCiAKICMgVGhpcyB0ZXN0IHJlbGllcyBvbiBpT1Mtc3BlY2lmaWMgZm9u
dCBmYWxsYmFjay4KIGZhc3QvdGV4dC9hcmFiaWMtYmxhY2tsaXN0ZWQtZXhwZWN0ZWQuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCisKK3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwgWyBQ
YXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjIyYTc4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCkBAIC0wLDAgKzEsMjYzIEBACis8aHRtbD48aGVh
ZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0gW107CisgICAgdmFyIGNsaWNr
cyA9IFtdOworCisgICAgdmFyIGhlaWdodCA9IDEwMDsKKyAgICB2YXIgd2lkdGggPSAxMDA7Cisg
ICAgdmFyIGl0ZW1zID0gMDsKKworICAgIGZ1bmN0aW9uIG1ha2VQbHVnaW5FbGVtZW50KCkKKyAg
ICB7CisgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZW1iZWQnKTsKKyAg
ICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N3Zl9lbWJlZF8nICsgaXRlbXMpOworICAgICAg
ICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRy
aWJ1dGUoJ2hlaWdodCcsIGhlaWdodCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3dt
b2RlJywgJ3dpbmRvdycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnbG9vcCcsICdmYWxzZScp
OworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291cmNlcy9zaW1wbGVfYmxhbmsu
c3dmJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2FwcGxpY2F0aW9uL3gtc2hv
Y2t3YXZlLWZsYXNoJyk7CisgICAgICAgIHJldHVybiBmOworICAgIH0KKworICAgIGZ1bmN0aW9u
IG1ha2VQbHVnaW5FbGVtZW50V2l0aEhpZ2hlclpJbmRleCgpCisgICAgeworICAgICAgICB2YXIg
ZiA9IG1ha2VQbHVnaW5FbGVtZW50KCk7CisgICAgICAgIGYuc3R5bGUuekluZGV4ID0gMTAwMDsK
KyAgICAgICAgZi5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisgICAgICAgIHJldHVybiBm
OworICAgIH0KKworICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKQorICAgIHsKKyAgICAgICAg
dmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgaS5zdHls
ZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOwor
ICAgICAgICBpLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIGkuc3R5bGUud2lkdGggPSAn
ODBweCc7CisgICAgICAgIGkuc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBpLnNldEF0
dHJpYnV0ZSgnZnJhbWVib3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3Jj
JywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VJZCkKKyAgICB7DQorICAgICAg
ICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvLnN0eWxl
LnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgby5zdHlsZS50b3AgPSAnMTBweCc7Cisg
ICAgICAgIG8uc3R5bGUubGVmdCA9ICczMHB4JzsKKyAgICAgICAgby5zdHlsZS53aWR0aCA9ICc4
MHB4JzsKKyAgICAgICAgby5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlk
ZGVuJzsKKyAgICAgICAgby5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1
dHRvbicgKyBjYXNlSWQgKyAnIiAnICsKKyAgICAgICAgICAgICdvbmNsaWNrPSJkb0NsaWNrKCcg
KyBjYXNlSWQgKworICAgICAgICAgICAgJyk7IiB2YWx1ZT0iY2xpY2ttZSIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7Ii8+JzsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGFw
cGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwgb3Zlcmxh
eUluc2lkZURpdiwgZXhwZWN0Q2xpY2thYmxlLCBjYXNlSWQpCisgICAgeworICAgICAgICB2YXIg
aWQgPSBtYWtlSWZyYW1lRGl2KCk7CisgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoY2FzZUlkKTsKKyAgICAgICAgaWYgKG92ZXJsYXlEaXZaSWZyYW1lKQorICAgICAg
ICAgICAgaWQuc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpJZnJhbWU7CisKKyAgICAgICAgdmFy
IG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBj
YXNlSWQpOworICAgICAgICBvZC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAg
IGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICBvZC5zdHlsZS56SW5kZXggPSBv
dmVybGF5RGl2Wk92ZXJsYXk7CisKKyAgICAgICAgaWYgKG92ZXJsYXlJbnNpZGVEaXYpIHsKKyAg
ICAgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICAgICAgcGFy
ZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3ZlcmxheTsKKworICAgICAgICAgICAg
cGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgICAgIHBhcmVu
dGRpdi5zdHlsZS50b3AgPSAnMHB4JzsKKyAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0
ID0gJzBweCc7CisgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQoaWQpOworICAgICAg
ICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgIHJvb3QuYXBwZW5k
Q2hpbGQocGFyZW50ZGl2KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoaWQpOworICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gYWRkQ2FzZSh4LCB5LCB0YWdzKQorICAgIHsKKyAg
ICAgICAgdmFyIGNhc2VJZCA9IGl0ZW1zOworICAgICAgICBpdGVtcysrOworCisgICAgICAgIHZh
ciBleHBlY3RDbGlja2FibGUgPSB0YWdzLmV4cGVjdCAmJiB0YWdzLmV4cGVjdC5pbmRleE9mKCdV
TkRFUicpID09IC0xOworICAgICAgICBleHBlY3RlZENsaWNrc1tjYXNlSWRdID0gZXhwZWN0Q2xp
Y2thYmxlOw0KKw0KKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKTsKKyAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgcm9vdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7Cisg
ICAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHggKiAod2lkdGggKyA0MCkgKyAncHgnOworICAgICAg
ICByb290LnN0eWxlLnRvcCA9IHkgKiAoaGVpZ2h0ICsgMjApICsgJ3B4JzsKKyAgICAgICAgcm9v
dC5pZCA9IGNhc2VJZDsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgICAgIHZhciBwbHVnaW5EaXZaOworICAgICAgICB2YXIgb3ZlcmxheURpdlpJZnJhbWU7Cisg
ICAgICAgIHZhciBvdmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgIGlmICh0YWdzLnBsdWdpbkxv
d2VyeikgeworICAgICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJs
YXlEaXZaSWZyYW1lID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMjAx
OworICAgICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2luSGlnaGVyeikgeworICAgICAgICAgICAg
cGx1Z2luRGl2WiA9IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOwor
ICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMTAxOworICAgICAgICB9IGVsc2UgaWYg
KHRhZ3MucGx1Z2luRXF1YWx6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAg
ICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2
Wk92ZXJsYXkgPSAxMDA7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgew0KKyAgICAgICAgICAgIC8vIEZvciB0aGlzIHRlc3QgY2FzZSB3ZSBzZXQg
dGhlIHotaW5kZXggZm9yIHRoZSBpZnJhbWUgYW5kIHRoZSBvdmVybGF5CisgICAgICAgICAgICAv
LyB0byBiZSBsb3dlciB0aGFuIHRoZSBwbHVnaW4uCisgICAgICAgICAgICBvdmVybGF5RGl2Wklm
cmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDA7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgYXBwZW5kUGx1Z2luID0gZnVuY3Rpb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcGQ7CisgICAgICAgICAgICBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgeworICAgICAgICAgICAgICAgIHBkID0gbWFrZVBsdWdpbkVsZW1lbnRXaXRo
SGlnaGVyWkluZGV4KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBk
ID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBp
ZiAodGFncy5wbHVnaW5JbnNpZGVEaXYgfHwgcGx1Z2luRGl2WikgeworICAgICAgICAgICAgICAg
IHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
ICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQocGQpCisgICAgICAgICAgICAgICAgaWYgKCF0
YWdzLnBsdWdpbk5vcmVsYXRpdmUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHls
ZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGl2
WikKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IHBsdWdpbkRp
dlo7CisKKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBhcmVudGRpdik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0
aXZlKQorICAgICAgICAgICAgICAgICAgICBwZC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7
CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxpZXIpIHsKKyAgICAgICAg
ICAgIGFwcGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwg
dGFncy5vdmVybGF5SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCk7CisgICAgICAg
ICAgICBhcHBlbmRQbHVnaW4oKTsKKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBhcHBl
bmRQbHVnaW4oKTsKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlPblRpbWVvdXQpIHsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KCdhcHBlbmRPdmVybGF5KCcrb3ZlcmxheURpdlpJZnJh
bWUrJywgJytvdmVybGF5RGl2Wk92ZXJsYXkgKycsICcgKyB0YWdzLm92ZXJsYXlJbnNpZGVEaXYg
KyAnLCAnICsgZXhwZWN0Q2xpY2thYmxlICsgJywgJyArIGNhc2VJZCArICcpJywgMCk7CisgICAg
ICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBhcHBlbmRPdmVybGF5KG92ZXJsYXlE
aXZaSWZyYW1lLCBvdmVybGF5RGl2Wk92ZXJsYXksIHRhZ3Mub3ZlcmxheUluc2lkZURpdiwgZXhw
ZWN0Q2xpY2thYmxlLCBjYXNlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgIH0K
KworICAgIGZ1bmN0aW9uIGRvQ2xpY2soaWQpCisgICAgew0KKyAgICAgICAgY2xpY2tzW2lkXSA9
IHRydWU7CisKKyAgICAgICAgLy8gQ2hlY2sgc3VjY2Vzcy9mYWlsdXJlLgorICAgICAgICB2YXIg
b3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOworICAgICAgICB2YXIg
d2FpdGluZ0Zvck1vcmVDbGlja3MgPSBmYWxzZTsKKyAgICAgICAgdmFyIGs7CisgICAgICAgIGZv
ciAoayBpbiBleHBlY3RlZENsaWNrcykgeworICAgICAgICAgICAgaWYgKGV4cGVjdGVkQ2xpY2tz
W2tdICYmICFjbGlja3Nba10pCisgICAgICAgICAgICAgICAgd2FpdGluZ0Zvck1vcmVDbGlja3Mg
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIWV4cGVjdGVkQ2xpY2tzW2tdICYmIGNsaWNr
c1trXSkgeworICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9DQorDQorICAg
ICAgICBpZiAoIXdhaXRpbmdGb3JNb3JlQ2xpY2tzKSB7CisgICAgICAgICAgICBvdXRwdXQuaW5u
ZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgYWRkQ2FzZSgwLCAwLCB7ZXhwZWN0
OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMCwgeydvdmVybGF5RWFybGll
cic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOiAxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6
J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5Mb3dlcnon
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDAsIHsncGx1
Z2luSGlnaGVyeic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNl
KDAsIDEsIHsnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Cisg
ICAgICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5Mb3dlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2
JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAxLCB7J3Bs
dWdpbkhpZ2hlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5E
RVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMiwgeydwbHVnaW5FcXVhbHonOjEsICdvdmVybGF5
SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAyLCB7J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsICdvdmVybGF5RWFy
bGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDIs
IHsnb3ZlcmxheUVhcmxpZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAg
YWRkQ2FzZSgzLCAyLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwg
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMywgeydwbHVnaW5O
b3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAzLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbklu
c2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwg
MywgeydwbHVnaW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292
ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgzLCAzLCB7J3BsdWdpbkxvd2Vyeic6MSwg
J292ZXJsYXlPblRpbWVvdXQnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBh
ZGRDYXNlKDQsIDAsIHsncGx1Z2luRXhwbGljaXRIaWdoZXJaSW5kZXgnOiAxLCAncGx1Z2luTm9y
ZWxhdGl2ZSc6IDEsICdwbHVnaW5JbnNpZGVEaXYnOiAxLCAnb3ZlcmxheUluc2lkZURpdic6IDEs
IGV4cGVjdDogJ292ZXJsYXkgVU5ERVInIH0pOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQor
CisgICAgLy8gQXV0b21hdGlvbjogdHJ5IHRvIGNsaWNrIG9uIGVhY2ggYnV0dG9uLgorICAgIHZh
ciBuZXh0SWRUb0NsaWNrID0gMDsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZU92ZXIoZWxlbU5hbWUpIHsK
KyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtTmFtZSk7Cisg
ICAgICAgIHZhciB4ID0gZWxlbS5vZmZzZXRMZWZ0ICsgZWxlbS5zY3JvbGxXaWR0aCAvIDI7Cisg
ICAgICAgIHZhciB5ID0gZWxlbS5vZmZzZXRUb3AgKyBlbGVtLnNjcm9sbEhlaWdodCAvIDI7Cisg
ICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudDsKKyAgICAgICAgd2hp
bGUgKG9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgeCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgIH0K
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZG9OZXh0Q2xpY2soKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgaWYgKG5leHRJZFRvQ2xpY2sgPCBleHBlY3RlZENsaWNrcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBuZXh0SWRUb0NsaWNrKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgbmV4dElkVG9DbGljaysr
OworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0K
KyAgICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCisg
ICAgPHA+VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwg
YWJvdmUgYQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBo
aWRkZW4gYnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFy
ZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3Rp
dmVseSwgY2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBzcXVhcmVzLiBZb3Ugc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycKKyAgICBidXR0b25zLjwv
cD4KKworICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZh
aWx1cmUuPC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
b250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rpdj4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkMmRhYjMuLjU1NWUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0wMy0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGlmcmFtZSBzaGltIHRlY2huaXF1
ZSBmb3Igd2luZG93ZWQgcGx1Z2lucyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBhbGxvd3MgdG8gc2hvdyBpZnJhbWVzIG9uIHRv
cCBvZiBhIHdpbmRvd2VkIHBsdWdpbi4gVGhlCisgICAgICAgIGltcGxlbWVudGF0b24gaXMgYmFz
ZWQgb24gY2hyb21pdW0gb25lLCBpdCBjaGVja3MgdGhlIGFyZWFzIG9mIHRoZQorICAgICAgICB3
aW5kb3dlZCBwbHVnaW5zIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5IGFuIGlmcmFtZS4gVGhlIG9jY2x1
c2lvbgorICAgICAgICByZWN0YW5nbGVzIGFyZSBzZW50IHRvIHRoZSBVSSBwcm9jZXNzIHRvIHBy
b3Blcmx5IG1hc2sgdGhlIHBsdWdpbgorICAgICAgICBjb250YWluZXIgd2luZG93LgorICAgICAg
ICBUaGlzIGlzIGNvdmVyZWQgYnkgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbC4KKworICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IEFkZCBvY2Ns
dXNpb25zIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFN1YnN0cmFjdAorICAgICAg
ICB0aGUgb2NjbHVzaW9uIHJlY3RhbmdsZXMgZnJvbSB0aGUgcGx1Z2luIGNvbnRhaW5lciB3aW5k
b3cgY2xpcCByZWdpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzV2lu
ZG93ZWQpOiBSZXR1cm4gd2hldGhlciB0aGUgcGx1Z2luIGlzCisgICAgICAgIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdl
KTogU2F2ZSB0aGUgcGFzc2VkIGluIG9jY2x1c2lvbnMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKTogUGFzcyBhbHNv
IHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRkIGlzV2luZG93ZWQoKSBtZXRob2Qg
YW5kCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCku
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDogQWRkIG9j
Y2x1c2lvbnMgcGFyYW1ldGVyCisgICAgICAgIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KTogSW5pdGlhbGl6ZSBtX2lzV2luZG93ZWQgdG8g
ZmFsc2UuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc1dpbmRvd2VkKTogUmV0dXJu
IHdoZXRoZXIgdGhlIHBsdWdpbiBpcworICAgICAgICB3aW5kb3dlZCBvciBub3QuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IFNhdmUgdGhlIHBhc3Nl
ZCBpbiBvY2NsdXNpb25zLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKTogU2V0IG1faXNXaW5kb3dlZCB0bworICAgICAgICB0cnVlIGlmIGEgcGx1
Z2luIGNvbnRhaW5lciBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFBhc3MgdGhlCisgICAgICAg
IG9jY2x1c2lvbnMgdG8gdGhlIGNvbnRyb2xsZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGQgb2NjbHVzaW9ucworICAgICAgICBwYXJhbWV0ZXIgdG8gV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aWZyYW1lSXNBYm92
ZVBsdWdpbik6IEhlbHBlciBzdGF0aWMgZnVuY3Rpb24gdG8gY2hlY2sgaWYKKyAgICAgICAgdGhl
IGlmcmFtZSBpcyBhYm92ZSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpmcmFtZVZpZXdP
d25lcklGcmFtZVJlbmRlcmVyKTogUmV0dXJuIHRoZSBvd25lciBlbGVtZW50CisgICAgICAgIHJl
bmRlcmVyIG9mIHRoZSBnaXZlbiBGcmFtZVZpZXcgaWYgaXQncyBhbiBpZnJhbWUuCisgICAgICAg
IChXZWJLaXQ6OmJ1aWxkWkluZGV4U3RhY2spOiBIZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgdGhl
IHJlbmRlcgorICAgICAgICBzdGFjayBvZiBhIGdpdmVuIHJlbmRlcmVyLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcyk6IFJldHVybnMgdGhl
IHNldAorICAgICAgICBvZiBhcmVhcyBvZiB0aGUgcGx1Z2luIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5
IGFuIGlmcmFtZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlk
Q2hhbmdlKTogQ2FsbAorICAgICAgICBnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcygpIGZvciB3
aW5kb3dlZCBwbHVnaW5zIGFuZCBwYXNzIHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBw
bHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UpOiBBZGQKKyAgICAgICAgb2NjbHVzaW9ucyBwYXJhbWV0ZXIuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwogMjAxNi0wMy0xOCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBDYWNoZXMgaW4gU2Fm
YXJpJ3MgRGV2ZWxvcCBtZW51IGRvZXMgbm90IGRpc2FibGUgY2FjaGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGRjNmQzNDMuLjk0NjZhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9wbHVnaW4tPmZyYW1lRGlkRmFpbChyZXF1ZXN0
SUQsIHdhc0NhbmNlbGxlZCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
LCBmbG9hdCBjb250ZW50c1NjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgYmFja2luZ1N0b3JlSGFuZGxlKQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Omdlb21l
dHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0s
IGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucywgZmxvYXQgY29udGVudHNTY2FsZUZh
Y3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSkK
IHsKICAgICBBU1NFUlQobV9wbHVnaW4pOwogCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIH0KIAotICAgIG1fcGx1Z2luLT5nZW9t
ZXRyeURpZENoYW5nZShwbHVnaW5TaXplLCBjbGlwUmVjdCwgcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSk7CisgICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHBsdWdpblNpemUsIGNsaXBS
ZWN0LCBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUp
CkBAIC02NTQsOSArNjU0LDkgQEAgdWludDY0X3QgUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVh
dGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2lu
ZG93SUQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lE
KQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Qcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBS
ZWN0LCB3aW5kb3dJRCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lE
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0
X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCA3MmNmZDg5Li4zMmI0YWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAg
LTExNiwxNCArMTE2LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9t
RGVzdHJ1Y3Rpb24oKSBvdmVycmlkZTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAg
ICB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVp
bnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJp
bGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGZyYW1l
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgZnJhbWVEaWRG
YWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwotICAgIHZvaWQgZ2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgZmxvYXQgY29udGVudHNTY2FsZUZhY3Rvciwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSk7CisgICAg
dm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSk7CiAgICAgdm9pZCBkaWRFdmFsdWF0
ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdFVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWRpcmVjdFJlc3BvbnNlVVJM
U3RyaW5nLCB1aW50MzJfdCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzQ29kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE4ZThjODAuLmEyZWRmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRy
b2xsZXJQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBTZW50IHdoZW4gdGhlIHBsdWctaW4g
Z2VvbWV0cnkgY2hhbmdlcy4KLSAgICBHZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRTaXpl
IHBsdWdpblNpemUsIFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3QsIFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBmbG9hdCBzY2FsZUZhY3RvciwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiYWNraW5nU3RvcmVIYW5kbGUpCisgICAgR2Vv
bWV0cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50U2l6ZSBwbHVnaW5TaXplLCBXZWJDb3JlOjpJbnRS
ZWN0IGNsaXBSZWN0LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnMsIGZsb2F0IHNjYWxl
RmFjdG9yLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhhbmRs
ZSkKIAogICAgICMgU2VudCB3aGVuIHRoZSBwbHVnLWluIHZpc2liaWxpdHkgY2hhbmdlcy4KICAg
ICBWaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY4ZDdlZTUuLmI3ZWIxNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0MzgsNyArMTQzOCw3IEBAIHByaXZhdGU6
CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkNv
bnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOwotICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisgICAgdm9pZCB3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpOwogICAgIHZv
aWQgd2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50
NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjU5ZDQwOC4uNjczNjg3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNTEsNyArMzUxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFgxMSkKICAgICAjIFgxMSB3aW5kb3dlZCBwbHVnaW4gbWVzc2FnZXMKICAg
ICBDcmVhdGVQbHVnaW5Db250YWluZXIoKSAtPiAodWludDY0X3Qgd2luZG93SUQpCi0gICAgV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwg
V2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCisgICAgV2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2Vi
Q29yZTo6SW50UmVjdCBjbGlwUmVjdCwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lv
bnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogICAgIFdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENo
YW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDgx
MjgyMmYuLjIxZWY0NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdWludDY0X3Qp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKaW5kZXggMmRiYWUwNS4uZTJlZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQogICAg
IHBsdWdpbldpbmRvd01hcCgpLnNldCh3aW5kb3dJRCwgc29ja2V0KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9j
Y2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewogICAgIEd0a1dpZGdldCogcGx1Z2luID0g
cGx1Z2luV2luZG93TWFwKCkuZ2V0KHdpbmRvd0lEKTsKICAgICBpZiAoIXBsdWdpbikKQEAgLTEx
Niw2ICsxMTYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWUKICAgICBpZiAoZ3RrX3dpZGdl
dF9nZXRfcmVhbGl6ZWQocGx1Z2luKSkgewogICAgICAgICBHZGtSZWN0YW5nbGUgY2xpcCA9IGNs
aXBSZWN0OwogICAgICAgICBjYWlyb19yZWdpb25fdCogY2xpcFJlZ2lvbiA9IGNhaXJvX3JlZ2lv
bl9jcmVhdGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0
IDogb2NjbHVzaW9ucykgeworICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIG9jY2x1c2lvbiA9IHJl
Y3Q7CisgICAgICAgICAgICBjYWlyb19yZWdpb25fc3VidHJhY3RfcmVjdGFuZ2xlKGNsaXBSZWdp
b24sICZvY2NsdXNpb24pOworICAgICAgICB9CiAgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29t
YmluZV9yZWdpb24oZ3RrX3dpZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAs
IDApOwogICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBiOWIyOTZjLi4wZmU0ZjU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc3NywxMSArNzc3LDE1IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW46OndhbnRzV2hlZWxFdmVudHMoKQogICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2lu
UXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpXYW50c1doZWVsRXZlbnRzKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0
ZWQpOwogCi0gICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3Qg
PT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAocGx1Z2luU2l6ZSA9PSBtX3BsdWdpblNpemUgJiYg
bV9jbGlwUmVjdCA9PSBjbGlwUmVjdCAmJgorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQor
ICAgICAgICBtX29jY2x1c2lvbnMgPT0gb2NjbHVzaW9ucyAmJgorI2VuZGlmCisgICAgICAgIG1f
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7
CiAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8uCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
OTcsOCArODAxLDExIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmCiAgICAgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybTsKIAogI2lmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUoWDExKQorICAgIG1fb2NjbHVzaW9ucyA9IG9jY2x1c2lvbnM7CiAgICAg
SW50UG9pbnQgZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50KEludFBvaW50KCkpOwogICAgIG1fZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlcyA9IEludFJlY3QoZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzLCBtX3BsdWdpblNpemUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob2NjbHVz
aW9ucyk7CiAjZW5kaWYKIAogICAgIHBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmgKaW5kZXggYmY1NjlmZS4uMmM5YzQ0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTc4LDcgKzc4LDYgQEAgcHVibGljOgogCiAjaWZuZGVmIE5QX05PX0NBUkJPTgog
ICAgIFdpbmRvd1JlZiB3aW5kb3dSZWYoKSBjb25zdDsKLSAgICBib29sIGlzV2luZG93QWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dIYXNGb2N1czsgfQogICAgIHZvaWQgdXBkYXRlRmFr
ZVdpbmRvd0JvdW5kcygpOwogCiAgICAgc3RhdGljIE5ldHNjYXBlUGx1Z2luKiBuZXRzY2FwZVBs
dWdpbkZyb21XaW5kb3coV2luZG93UmVmKTsKQEAgLTg5LDYgKzg4LDcgQEAgcHVibGljOgogCiAj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlczsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYgb2NjbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb2NjbHVzaW9uczsgfQogI2VuZGlmCiAg
ICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Ns
aXBSZWN0OyB9CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGx1Z2luU2l6ZTsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGV2YWx1YXRlKE5QT2JqZWN0KiwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywgTlBWYXJpYW50
KiByZXN1bHQpOwogICAgIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgYm9v
bCBpc011dGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1dpbmRvd2VkOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc1dpbmRvd2VkOyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX2lzVmlzaWJsZTsgfQogCiAgICAgc3RhdGljIHZvaWQgc2V0U2V0RXhjZXB0aW9uRnVuY3Rp
b24odm9pZCAoKikoY29uc3QgU3RyaW5nJikpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZTsKICAgICBib29sIHdh
bnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZp
ZXdUcmFuc2Zvcm0pIG92ZXJyaWRlOworICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKSBvdmVy
cmlkZTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29s
IHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CkBAIC0yOTksNiArMjk5LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwog
CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+IG1fb2NjbHVzaW9uczsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZnJhbWVSZWN0SW5XaW5k
b3dDb29yZGluYXRlczsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwCmluZGV4IDg2ZGU4YmUuLjM3N2I3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblgx
MTo6Z2VvbWV0cnlEaWRDaGFuZ2UoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgd2luZG93
SUQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oR0RLX1dJTkRPV19YSUQoZ3RrX3BsdWdfZ2V0X3Nv
Y2tldF93aW5kb3coR1RLX1BMVUcobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkpKSk7CiAjZW5kaWYK
LSAgICAgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4u
Y2xpcFJlY3QoKSwgd2luZG93SUQpOworICAgICAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dD
b29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCBtX3BsdWdpbi5vY2NsdXNpb25zKCks
IHdpbmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY3LDcgKzI2Nyw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHdpbmRv
d0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9z
b2NrZXRfd2luZG93KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlm
CiAgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRD
aGFuZ2UobV9wbHVnaW4uaXNWaXNpYmxlKCksIHdpbmRvd0lEKTsKLSAgICBtX3BsdWdpbi5jb250
cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVS
ZWN0SW5XaW5kb3dDb29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7
CisgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xp
cFJlY3QoKSwgbV9wbHVnaW4ub2NjbHVzaW9ucygpLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgTmV0
c2NhcGVQbHVnaW5YMTE6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKaW5kZXggYzI2MzllOC4uNzkwN2ZiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNDIsOCAr
MTQyLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgp
IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZyYW1lRGlk
RmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZjE5
ZjMxLi41ZGMyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTI5LDcgKzkyOSw3IEBAIEludFJlY3QgUERGUGx1Z2lu
Ojpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNU
b1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0K
IAotdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pCit2b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsK
ICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtOwogICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDZlMGNiOWMuLjIxYjYyM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE0NCwx
MiArMTQ0LDE1IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWctaW4g
aXMgdHJhbnNwYXJlbnQgb3Igbm90LgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkg
PSAwOwogCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIGlzIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0ID0gMDsKKwogICAgIC8v
IFJldHVybnMgd2hldGhlciB3ZSBzaG91bGQgc2VuZCB3aGVlbCBldmVudHMgdG8gdGhpcyBwbHVn
LWluLgogICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBpdHMgZ2VvbWV0cnkgaGFzIGNoYW5nZWQuIFRoZSBjbGlw
IHJlY3QgaXMgaW4gcGx1Zy1pbiBjb29yZGluYXRlcywgYW5kIHRoZSBhZmZpbmUgdHJhbnNmb3Jt
IGNhbiBiZSB1c2VkCiAgICAgLy8gdG8gY29udmVydCBmcm9tIHJvb3QgdmlldyBjb29yZGluYXRl
cyB0byBwbHVnLWluIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRv
Um9vdFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVz
aW9ucykgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBpdCBoYXMgYmVlbiBl
eHBsaWNpdGx5IGhpZGRlbiBvciBzaG93bi4gKE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBjYWxsZWQg
d2hlbiB0aGUgcGx1Zy1pbiBiZWNvbWVzIG9ic2N1cmVkIGZyb20gdmlldyBvbiBzY3JlZW4uKQog
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaAppbmRleCA2ZmEwNTg2Li5lMmY0MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE0Niw3ICsxNDYs
NyBAQCBwdWJsaWM6CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgLy8gQ3JlYXRl
IGEgcGx1Z2luIGNvbnRhaW5lciBmb3Igd2luZG93ZWQgcGx1Z2lucwogICAgIHZpcnR1YWwgdWlu
dDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lE
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1
aW50NjRfdCB3aW5kb3dJRCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpblZp
c2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSA9IDA7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHAKaW5kZXggM2I1OGUyMC4uMzU3OTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC03MSw2ICs3MSw3IEBA
IFBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJv
b2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQogICAgICwgbV9yZW1vdGVMYXllckNsaWVudElEKDApCiAg
ICAgLCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwg
bV9pc1Jlc3RhcnRlZFByb2Nlc3MoaXNSZXN0YXJ0ZWRQcm9jZXNzKQorICAgICwgbV9pc1dpbmRv
d2VkKGZhbHNlKQogewogfQogCkBAIC0yNTcsNiArMjU4LDExIEBAIGJvb2wgUGx1Z2luUHJveHk6
OmlzVHJhbnNwYXJlbnQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBQbHVnaW5Qcm94
eTo6aXNXaW5kb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNXaW5kb3dlZDsKK30KKwog
Ym9vbCBQbHVnaW5Qcm94eTo6d2FudHNXaGVlbEV2ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fd2Fu
dHNXaGVlbEV2ZW50czsKQEAgLTI4MywxMiArMjg5LDIyIEBAIHZvaWQgUGx1Z2luUHJveHk6Omdl
b21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1Zh
bGlkRGF0YSA9IGZhbHNlOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdl
KG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBj
b250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdpbkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2lu
SW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucyA9IG1fb2NjbHVzaW9uczsKKyNlbHNlCisgICAgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnM7CisjZW5kaWYKKworICAgIG1fY29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6
Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zLCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdp
bkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblByb3h5
OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtKQordm9pZCBQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiBvY2NsdXNpb25zKQogewotICAgIGlmIChwbHVnaW5TaXplID09IG1fcGx1Z2luU2l6
ZSAmJiBtX2NsaXBSZWN0ID09IGNsaXBSZWN0ICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7CisgICAgaWYgKHBsdWdpblNpemUgPT0g
bV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QgJiYKKyNpZiBQTFVHSU5fQVJD
SElURUNUVVJFKFgxMSkKKyAgICAgICAgbV9vY2NsdXNpb25zID09IG9jY2x1c2lvbnMgJiYKKyNl
bmRpZgorICAgICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybSkgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjk2LDYgKzMxMiwxMSBAQCB2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbAog
ICAgIG1fcGx1Z2luU2l6ZSA9IHBsdWdpblNpemU7CiAgICAgbV9jbGlwUmVjdCA9IGNsaXBSZWN0
OwogICAgIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFu
c2Zvcm07CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgbV9vY2NsdXNpb25zID0g
b2NjbHVzaW9uczsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG9jY2x1c2lvbnMpOworI2VuZGlm
CiAKICAgICBnZW9tZXRyeURpZENoYW5nZSgpOwogfQpAQCAtNjk5LDExICs3MjAsMTIgQEAgdm9p
ZCBQbHVnaW5Qcm94eTo6c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c2JhclRl
eHQpCiB2b2lkIFBsdWdpblByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdp
bmRvd0lEKQogewogICAgIHdpbmRvd0lEID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250
YWluZXIoKTsKKyAgICBtX2lzV2luZG93ZWQgPSB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRf
dCB3aW5kb3dJRCkKK3ZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50
NjRfdCB3aW5kb3dJRCkKIHsKLSAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpOworICAgIGNvbnRyb2xs
ZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0
LCBvY2NsdXNpb25zLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2Vk
UGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CmluZGV4IDcyZGE5N2EuLjhkMDI5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04Myw4ICs4Myw5IEBAIHByaXZhdGU6CiAgICAg
UGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGJvb2wg
aXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZShi
b29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmco
dWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50
NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKQEAgLTE4MCw3ICsx
ODEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAg
ICAgdm9pZCBjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKTsKLSAgICB2
b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qg
d2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2
NF90IHdpbmRvd0lEKTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5n
ZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpOwogI2VuZGlmCiAKQEAgLTIwNSw2
ICsyMDYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1pbiBjb29yZGlu
YXRlcy4KICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+IG1fb2NjbHVzaW9uczsKKyNlbmRpZgorCiAgICAgLy8gVGhpcyBpcyB0aGUg
YmFja2luZyBzdG9yZSB0aGF0IHdlIHBhaW50IHdoZW4gd2UncmUgdG9sZCB0byBwYWludC4KICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JhY2tpbmdTdG9yZTsKIApAQCAtMjM0LDYgKzIz
OSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFByb2Nlc3M7
CisKKyAgICBib29sIG1faXNXaW5kb3dlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlZTg0M2QuLjNkMzhiZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMu
aW4KQEAgLTc1LDcgKzc1LDcgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIENyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJRCkK
IAogICAgICMgVXBkYXRlIGdlb21ldHJ5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQKLSAgICBX
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0
LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBX
ZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2NjbHVz
aW9ucywgdWludDY0X3Qgd2luZG93SUQpCiAKICAgICAjIFVwZGF0ZSB2aXNpYmlsaXR5IG9mIHdp
bmRvd2VkIHBsdWdpbiB3aWRnZXQKICAgICBXaW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFu
Z2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDY4ZWEyMzMuLjZlNDA0
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMDk2LDYgKzEwOTcsMTA0IEBAIGJvb2wgUGx1Z2luVmlldzo6dHJhbnNm
b3Jtc0FmZmVjdEZyYW1lUmVjdCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9v
bCBpZnJhbWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYg
aWZyYW1lWkluZGV4U3RhY2ssIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1
Z2luWkluZGV4U3RhY2spCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZnJhbWVaSW5k
ZXhTdGFjay5zaXplKCkgJiYgaSA8IHBsdWdpblpJbmRleFN0YWNrLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIC8vIFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiBXZSB3YW50
IHRvIGl0ZXJhdGUgcm9vdC1kb3dud2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20gdGhl
IGVuZC4KKyAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVTdGFja1Jvb3RPYmplY3Qg
PSBpZnJhbWVaSW5kZXhTdGFja1tpZnJhbWVaSW5kZXhTdGFjay5zaXplKCkgLSAxIC0gaV07Cisg
ICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luU3RhY2tSb290T2JqZWN0ID0gcGx1Z2lu
WkluZGV4U3RhY2tbcGx1Z2luWkluZGV4U3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBp
ZiAoaWZyYW1lU3RhY2tSb290T2JqZWN0ID09IHBsdWdpblN0YWNrUm9vdE9iamVjdCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUg
c3RhY2sgdGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBq
dXN0IGJlbG93IHRoZSBsb3dlc3QgY29tbWVudCBhbmNlc3Rvci4KKyAgICAgICAgLy8gRGV0ZXJt
aW5lIHdoaWNoIHNob3VsZCBiZSBvbiB0b3AuCisgICAgICAgIGlmIChpZnJhbWVTdGFja1Jvb3RP
YmplY3QtPnN0eWxlKCkuekluZGV4KCkgPiBwbHVnaW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCku
ekluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGlmcmFtZVN0
YWNrUm9vdE9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSA8IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+
c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFj
a3MgYmVoaW5kIHRoZSBpZnJhbWUuIFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxp
dHkgd2l0aCBJRS4KKyAgICAgICAgaWYgKHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS5w
b3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAvLyBUaGUgMCd0aCBl
bGVtZW50cyBvZiB0aGVzZSBSZW5kZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2lu
IG5vZGUgYW5kIHRoZSBpZnJhbWUuCisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBs
dWdpblJlbmRlck9iamVjdCA9IHBsdWdpblpJbmRleFN0YWNrWzBdOworICAgICAgICAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVaSW5kZXhTdGFja1sw
XTsKKworICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgo
KSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEluc3BlY3QgdGhlIGRvY3VtZW50IG9yZGVyLiBMYXRlciBvcmRlciBtZWFucyBo
aWdoZXIgc3RhY2tpbmcuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0gaWZy
YW1lU3RhY2tSb290T2JqZWN0LT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcGx1Z2luU3Rh
Y2tSb290T2JqZWN0LT5wYXJlbnQoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBSZW5kZXJPYmpl
Y3QqIGNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocGFyZW50KS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYg
KGNoaWxkID09IGlmcmFtZVN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoY2hpbGQgPT0gcGx1Z2luU3RhY2tSb290T2JqZWN0KQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZyYW1lVmlld093bmVySUZyYW1lUmVu
ZGVyZXIoY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit7CisgICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSBmcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAgaWYgKCFlbGVt
ZW50IHx8ICFlbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSA/IGVs
ZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOworfQorCitzdGF0aWMgdm9pZCBidWlsZFpJbmRl
eFN0YWNrKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3Qq
PiYgekluZGV4U3RhY2spCit7CisgICAgekluZGV4U3RhY2suY2xlYXIoKTsKKyAgICB3aGlsZSAo
cmVuZGVyZXIpIHsKKyAgICAgICAgekluZGV4U3RhY2suYXBwZW5kKHJlbmRlcmVyKTsKKyAgICAg
ICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisgICAgfQorfQorCit2b2lkIFBsdWdp
blZpZXc6OmdldE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVz
aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIXBhcmVudCgpIHx8ICFwYXJlbnQoKS0+aXNGcmFtZVZp
ZXcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3ID0g
ZG93bmNhc3Q8RnJhbWVWaWV3PihwYXJlbnQoKSk7CisKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gcGx1Z2luWkluZGV4U3RhY2s7CisgICAgYnVpbGRaSW5kZXhTdGFjayhtX3BsdWdp
bkVsZW1lbnQtPnJlbmRlcmVyKCksIHBsdWdpblpJbmRleFN0YWNrKTsKKworICAgIGNvbnN0IElu
dFJlY3QmIHBsdWdpblJlY3QgPSBmcmFtZVJlY3QoKTsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gaWZyYW1lWkluZGV4U3RhY2s7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6
IHBhcmVudEZyYW1lVmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAvLyBXZSBvbmx5IGNhcmUg
YWJvdXQgRnJhbWVWaWV3cyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZpZXdzLgor
ICAgICAgICBpZiAoIWNoaWxkLT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGZyYW1lVmlld093bmVy
SUZyYW1lUmVuZGVyZXIoZG93bmNhc3Q8RnJhbWVWaWV3PihjaGlsZC5nZXQoKSkpOworICAgICAg
ICBpZiAoIWlmcmFtZVJlbmRlcmVyIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGlm
cmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
LmludGVyc2VjdHMocGx1Z2luUmVjdCkpIHsKKyAgICAgICAgICAgIGJ1aWxkWkluZGV4U3RhY2so
aWZyYW1lUmVuZGVyZXIsIGlmcmFtZVpJbmRleFN0YWNrKTsKKworICAgICAgICAgICAgaWYgKGlm
cmFtZUlzQWJvdmVQbHVnaW4oaWZyYW1lWkluZGV4U3RhY2ssIHBsdWdpblpJbmRleFN0YWNrKSkg
eworICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJveCogcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJCb3g+KGlmcmFtZVJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2lu
dCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOworICAgICAg
ICAgICAgICAgIHBvaW50Lm1vdmUoLXBsdWdpblJlY3QueCgpLCAtcGx1Z2luUmVjdC55KCkpOwor
ICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShyZW5kZXJlci0+d2lkdGgoKSwgcmVuZGVyZXIt
PmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBvY2NsdXNpb25zLmFwcGVuZChJbnRSZWN0KHBv
aW50LCBzaXplKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hhbmdlKCkKIHsKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCB8fCAhbV9wbHVnaW4gfHwgIXBhcmVudCgpKQpAQCAtMTEyNCw4ICsxMjIzLDEyIEBA
IHZvaWQgUGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgaWYgKCFj
bGlwUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjbGlwUmVjdCA9IGJvdW5kc1JlY3QoKTsK
ICAgICB9Ci0gICAgCi0gICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHNpemUoKSwgY2xp
cFJlY3QsIHRyYW5zZm9ybSk7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gb2NjbHVzaW9uczsKKyAg
ICBpZiAobV9wbHVnaW4tPmlzV2luZG93ZWQoKSkKKyAgICAgICAgZ2V0T2NjbHVzaW9uUmVjdHNC
eUlGcmFtZXMob2NjbHVzaW9ucyk7CisKKyAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2Uo
c2l6ZSgpLCBjbGlwUmVjdCwgdHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3Ojp2aWV3VmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC0xNzA1LDkgKzE4MDgsOSBAQCB1
aW50NjRfdCBQbHVnaW5WaWV3OjpjcmVhdGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3
aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQordm9pZCBQbHVnaW5WaWV3Ojp3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpCiB7Ci0gICAgbV93ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpKTsKKyAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShmcmFtZVJlY3QsIGNsaXBSZWN0LCBvY2NsdXNpb25zLCB3aW5kb3dJRCkpOwogfQogCiB2b2lk
IFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlz
aWJsZSwgdWludDY0X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAzMDY4ZjA1Li4xMzZhYzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTIyNiw3ICsyMjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkg
b3ZlcnJpZGU7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgdWludDY0X3QgY3Jl
YXRlUGx1Z2luQ29udGFpbmVyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJ
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2Uo
Ym9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICNlbmRpZgogCkBA
IC0yNDAsNiArMjQwLDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZl
bnQ+IGNyZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKIAorICAgIC8v
IFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24g
YnkgdGhlIHBsdWdpbiAoImN1dG91dHMiKS4gVGhpcyBoZWxwcyBpbXBsZW1lbnQgdGhlICJpZnJh
bWUgc2hpbSIKKyAgICAvLyB0ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdp
biB3aXRoIGNvbnRlbnQgZnJvbSB0aGUgcGFnZS4gSWZyYW1lIGVsZW1lbnRzIHNob3VsZCBvY2Ns
dWRlIHBsdWdpbnMgd2hlbiB0aGV5IG9jY3VyCisgICAgLy8gaGlnaGVyIGluIHRoZSBzdGFja2lu
ZyBvcmRlci4KKyAgICB2b2lkIGdldE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYpIGNvbnN0OworCiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAg
ICAgV2ViUGFnZSogbV93ZWJQYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274405</attachid>
            <date>2016-03-18 04:18:22 -0700</date>
            <delta_ts>2016-03-18 04:41:29 -0700</delta_ts>
            <desc>Fox coding style</desc>
            <filename>wk2-iframe-shim.diff</filename>
            <type>text/plain</type>
            <size>48074</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjQxZDExLi41ZGM4OTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMt
MTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdpbmRvd2VkIHBsdWdp
bnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnJpbmcgYmFjayBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIGFuZCBza2lwIGl0IGlu
IGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgZXhjZXB0IEdUSysuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTE3ICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdFQjog
Vm9pY2VPdmVyIGRvZXMgbm90IGFubm91bmNlIHNvbWUgV0FJLUFSSUEgZG9jdW1lbnQgc3RydWN0
dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzU3MDAyZS4uNDM0ZWI4MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01MSw2ICs1MSw5IEBAIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVz
dC13aXRoLWNsaWVudC1wcm92aWRlZC1odHRwLWJvZHkuaHRtbCBbIFNraXAgXQogZmFzdC9oYXJu
ZXNzL3VpLXNpZGUtc2NyaXB0cy5odG1sIFsgU2tpcCBdCiBmYXN0L2hhcm5lc3MvY29uY3VycmVu
dC11aS1zaWRlLXNjcmlwdHMuaHRtbCBbIFNraXAgXQogCisjIE9ubHkgR1RLKyBzdXBwb3J0cyBp
ZnJhbWUgc2hpbXMuCitwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIFsgU2tpcCBdCisKICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIHRl
c3RzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMTIyMmQ1Li4yOTA5MjM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcwNSwzICsyNzA1LDUg
QEAgZmFzdC9tdWx0aWNvbC9tdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVyLWZvci1pbnB1
dC5odG1sIFsgUGFzcyBdCiAKICMgVGhpcyB0ZXN0IHJlbGllcyBvbiBpT1Mtc3BlY2lmaWMgZm9u
dCBmYWxsYmFjay4KIGZhc3QvdGV4dC9hcmFiaWMtYmxhY2tsaXN0ZWQtZXhwZWN0ZWQuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCisKK3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwgWyBQ
YXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjIyYTc4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCkBAIC0wLDAgKzEsMjYzIEBACis8aHRtbD48aGVh
ZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0gW107CisgICAgdmFyIGNsaWNr
cyA9IFtdOworCisgICAgdmFyIGhlaWdodCA9IDEwMDsKKyAgICB2YXIgd2lkdGggPSAxMDA7Cisg
ICAgdmFyIGl0ZW1zID0gMDsKKworICAgIGZ1bmN0aW9uIG1ha2VQbHVnaW5FbGVtZW50KCkKKyAg
ICB7CisgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZW1iZWQnKTsKKyAg
ICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N3Zl9lbWJlZF8nICsgaXRlbXMpOworICAgICAg
ICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRy
aWJ1dGUoJ2hlaWdodCcsIGhlaWdodCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3dt
b2RlJywgJ3dpbmRvdycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnbG9vcCcsICdmYWxzZScp
OworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291cmNlcy9zaW1wbGVfYmxhbmsu
c3dmJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2FwcGxpY2F0aW9uL3gtc2hv
Y2t3YXZlLWZsYXNoJyk7CisgICAgICAgIHJldHVybiBmOworICAgIH0KKworICAgIGZ1bmN0aW9u
IG1ha2VQbHVnaW5FbGVtZW50V2l0aEhpZ2hlclpJbmRleCgpCisgICAgeworICAgICAgICB2YXIg
ZiA9IG1ha2VQbHVnaW5FbGVtZW50KCk7CisgICAgICAgIGYuc3R5bGUuekluZGV4ID0gMTAwMDsK
KyAgICAgICAgZi5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisgICAgICAgIHJldHVybiBm
OworICAgIH0KKworICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKQorICAgIHsKKyAgICAgICAg
dmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgaS5zdHls
ZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOwor
ICAgICAgICBpLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIGkuc3R5bGUud2lkdGggPSAn
ODBweCc7CisgICAgICAgIGkuc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBpLnNldEF0
dHJpYnV0ZSgnZnJhbWVib3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3Jj
JywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VJZCkKKyAgICB7DQorICAgICAg
ICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvLnN0eWxl
LnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgby5zdHlsZS50b3AgPSAnMTBweCc7Cisg
ICAgICAgIG8uc3R5bGUubGVmdCA9ICczMHB4JzsKKyAgICAgICAgby5zdHlsZS53aWR0aCA9ICc4
MHB4JzsKKyAgICAgICAgby5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlk
ZGVuJzsKKyAgICAgICAgby5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1
dHRvbicgKyBjYXNlSWQgKyAnIiAnICsKKyAgICAgICAgICAgICdvbmNsaWNrPSJkb0NsaWNrKCcg
KyBjYXNlSWQgKworICAgICAgICAgICAgJyk7IiB2YWx1ZT0iY2xpY2ttZSIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7Ii8+JzsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGFw
cGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwgb3Zlcmxh
eUluc2lkZURpdiwgZXhwZWN0Q2xpY2thYmxlLCBjYXNlSWQpCisgICAgeworICAgICAgICB2YXIg
aWQgPSBtYWtlSWZyYW1lRGl2KCk7CisgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoY2FzZUlkKTsKKyAgICAgICAgaWYgKG92ZXJsYXlEaXZaSWZyYW1lKQorICAgICAg
ICAgICAgaWQuc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpJZnJhbWU7CisKKyAgICAgICAgdmFy
IG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBj
YXNlSWQpOworICAgICAgICBvZC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAg
IGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICBvZC5zdHlsZS56SW5kZXggPSBv
dmVybGF5RGl2Wk92ZXJsYXk7CisKKyAgICAgICAgaWYgKG92ZXJsYXlJbnNpZGVEaXYpIHsKKyAg
ICAgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICAgICAgcGFy
ZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3ZlcmxheTsKKworICAgICAgICAgICAg
cGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgICAgIHBhcmVu
dGRpdi5zdHlsZS50b3AgPSAnMHB4JzsKKyAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0
ID0gJzBweCc7CisgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQoaWQpOworICAgICAg
ICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgIHJvb3QuYXBwZW5k
Q2hpbGQocGFyZW50ZGl2KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoaWQpOworICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gYWRkQ2FzZSh4LCB5LCB0YWdzKQorICAgIHsKKyAg
ICAgICAgdmFyIGNhc2VJZCA9IGl0ZW1zOworICAgICAgICBpdGVtcysrOworCisgICAgICAgIHZh
ciBleHBlY3RDbGlja2FibGUgPSB0YWdzLmV4cGVjdCAmJiB0YWdzLmV4cGVjdC5pbmRleE9mKCdV
TkRFUicpID09IC0xOworICAgICAgICBleHBlY3RlZENsaWNrc1tjYXNlSWRdID0gZXhwZWN0Q2xp
Y2thYmxlOw0KKw0KKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKTsKKyAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgcm9vdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7Cisg
ICAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHggKiAod2lkdGggKyA0MCkgKyAncHgnOworICAgICAg
ICByb290LnN0eWxlLnRvcCA9IHkgKiAoaGVpZ2h0ICsgMjApICsgJ3B4JzsKKyAgICAgICAgcm9v
dC5pZCA9IGNhc2VJZDsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgICAgIHZhciBwbHVnaW5EaXZaOworICAgICAgICB2YXIgb3ZlcmxheURpdlpJZnJhbWU7Cisg
ICAgICAgIHZhciBvdmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgIGlmICh0YWdzLnBsdWdpbkxv
d2VyeikgeworICAgICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJs
YXlEaXZaSWZyYW1lID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMjAx
OworICAgICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2luSGlnaGVyeikgeworICAgICAgICAgICAg
cGx1Z2luRGl2WiA9IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOwor
ICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMTAxOworICAgICAgICB9IGVsc2UgaWYg
KHRhZ3MucGx1Z2luRXF1YWx6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAg
ICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2
Wk92ZXJsYXkgPSAxMDA7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgew0KKyAgICAgICAgICAgIC8vIEZvciB0aGlzIHRlc3QgY2FzZSB3ZSBzZXQg
dGhlIHotaW5kZXggZm9yIHRoZSBpZnJhbWUgYW5kIHRoZSBvdmVybGF5CisgICAgICAgICAgICAv
LyB0byBiZSBsb3dlciB0aGFuIHRoZSBwbHVnaW4uCisgICAgICAgICAgICBvdmVybGF5RGl2Wklm
cmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDA7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgYXBwZW5kUGx1Z2luID0gZnVuY3Rpb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcGQ7CisgICAgICAgICAgICBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgeworICAgICAgICAgICAgICAgIHBkID0gbWFrZVBsdWdpbkVsZW1lbnRXaXRo
SGlnaGVyWkluZGV4KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBk
ID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBp
ZiAodGFncy5wbHVnaW5JbnNpZGVEaXYgfHwgcGx1Z2luRGl2WikgeworICAgICAgICAgICAgICAg
IHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
ICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQocGQpCisgICAgICAgICAgICAgICAgaWYgKCF0
YWdzLnBsdWdpbk5vcmVsYXRpdmUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHls
ZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGl2
WikKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IHBsdWdpbkRp
dlo7CisKKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBhcmVudGRpdik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0
aXZlKQorICAgICAgICAgICAgICAgICAgICBwZC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7
CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxpZXIpIHsKKyAgICAgICAg
ICAgIGFwcGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwg
dGFncy5vdmVybGF5SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCk7CisgICAgICAg
ICAgICBhcHBlbmRQbHVnaW4oKTsKKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBhcHBl
bmRQbHVnaW4oKTsKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlPblRpbWVvdXQpIHsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KCdhcHBlbmRPdmVybGF5KCcrb3ZlcmxheURpdlpJZnJh
bWUrJywgJytvdmVybGF5RGl2Wk92ZXJsYXkgKycsICcgKyB0YWdzLm92ZXJsYXlJbnNpZGVEaXYg
KyAnLCAnICsgZXhwZWN0Q2xpY2thYmxlICsgJywgJyArIGNhc2VJZCArICcpJywgMCk7CisgICAg
ICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBhcHBlbmRPdmVybGF5KG92ZXJsYXlE
aXZaSWZyYW1lLCBvdmVybGF5RGl2Wk92ZXJsYXksIHRhZ3Mub3ZlcmxheUluc2lkZURpdiwgZXhw
ZWN0Q2xpY2thYmxlLCBjYXNlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgIH0K
KworICAgIGZ1bmN0aW9uIGRvQ2xpY2soaWQpCisgICAgew0KKyAgICAgICAgY2xpY2tzW2lkXSA9
IHRydWU7CisKKyAgICAgICAgLy8gQ2hlY2sgc3VjY2Vzcy9mYWlsdXJlLgorICAgICAgICB2YXIg
b3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOworICAgICAgICB2YXIg
d2FpdGluZ0Zvck1vcmVDbGlja3MgPSBmYWxzZTsKKyAgICAgICAgdmFyIGs7CisgICAgICAgIGZv
ciAoayBpbiBleHBlY3RlZENsaWNrcykgeworICAgICAgICAgICAgaWYgKGV4cGVjdGVkQ2xpY2tz
W2tdICYmICFjbGlja3Nba10pCisgICAgICAgICAgICAgICAgd2FpdGluZ0Zvck1vcmVDbGlja3Mg
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIWV4cGVjdGVkQ2xpY2tzW2tdICYmIGNsaWNr
c1trXSkgeworICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9DQorDQorICAg
ICAgICBpZiAoIXdhaXRpbmdGb3JNb3JlQ2xpY2tzKSB7CisgICAgICAgICAgICBvdXRwdXQuaW5u
ZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgYWRkQ2FzZSgwLCAwLCB7ZXhwZWN0
OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMCwgeydvdmVybGF5RWFybGll
cic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOiAxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6
J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5Mb3dlcnon
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDAsIHsncGx1
Z2luSGlnaGVyeic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNl
KDAsIDEsIHsnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Cisg
ICAgICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5Mb3dlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2
JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAxLCB7J3Bs
dWdpbkhpZ2hlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5E
RVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMiwgeydwbHVnaW5FcXVhbHonOjEsICdvdmVybGF5
SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAyLCB7J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsICdvdmVybGF5RWFy
bGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDIs
IHsnb3ZlcmxheUVhcmxpZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAg
YWRkQ2FzZSgzLCAyLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwg
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMywgeydwbHVnaW5O
b3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAzLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbklu
c2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwg
MywgeydwbHVnaW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292
ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgzLCAzLCB7J3BsdWdpbkxvd2Vyeic6MSwg
J292ZXJsYXlPblRpbWVvdXQnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBh
ZGRDYXNlKDQsIDAsIHsncGx1Z2luRXhwbGljaXRIaWdoZXJaSW5kZXgnOiAxLCAncGx1Z2luTm9y
ZWxhdGl2ZSc6IDEsICdwbHVnaW5JbnNpZGVEaXYnOiAxLCAnb3ZlcmxheUluc2lkZURpdic6IDEs
IGV4cGVjdDogJ292ZXJsYXkgVU5ERVInIH0pOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQor
CisgICAgLy8gQXV0b21hdGlvbjogdHJ5IHRvIGNsaWNrIG9uIGVhY2ggYnV0dG9uLgorICAgIHZh
ciBuZXh0SWRUb0NsaWNrID0gMDsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZU92ZXIoZWxlbU5hbWUpIHsK
KyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtTmFtZSk7Cisg
ICAgICAgIHZhciB4ID0gZWxlbS5vZmZzZXRMZWZ0ICsgZWxlbS5zY3JvbGxXaWR0aCAvIDI7Cisg
ICAgICAgIHZhciB5ID0gZWxlbS5vZmZzZXRUb3AgKyBlbGVtLnNjcm9sbEhlaWdodCAvIDI7Cisg
ICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudDsKKyAgICAgICAgd2hp
bGUgKG9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgeCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgIH0K
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZG9OZXh0Q2xpY2soKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgaWYgKG5leHRJZFRvQ2xpY2sgPCBleHBlY3RlZENsaWNrcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBuZXh0SWRUb0NsaWNrKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgbmV4dElkVG9DbGljaysr
OworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0K
KyAgICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCisg
ICAgPHA+VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwg
YWJvdmUgYQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBo
aWRkZW4gYnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFy
ZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3Rp
dmVseSwgY2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBzcXVhcmVzLiBZb3Ugc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycKKyAgICBidXR0b25zLjwv
cD4KKworICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZh
aWx1cmUuPC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
b250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rpdj4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkMmRhYjMuLjU1NWUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0wMy0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGlmcmFtZSBzaGltIHRlY2huaXF1
ZSBmb3Igd2luZG93ZWQgcGx1Z2lucyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBhbGxvd3MgdG8gc2hvdyBpZnJhbWVzIG9uIHRv
cCBvZiBhIHdpbmRvd2VkIHBsdWdpbi4gVGhlCisgICAgICAgIGltcGxlbWVudGF0b24gaXMgYmFz
ZWQgb24gY2hyb21pdW0gb25lLCBpdCBjaGVja3MgdGhlIGFyZWFzIG9mIHRoZQorICAgICAgICB3
aW5kb3dlZCBwbHVnaW5zIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5IGFuIGlmcmFtZS4gVGhlIG9jY2x1
c2lvbgorICAgICAgICByZWN0YW5nbGVzIGFyZSBzZW50IHRvIHRoZSBVSSBwcm9jZXNzIHRvIHBy
b3Blcmx5IG1hc2sgdGhlIHBsdWdpbgorICAgICAgICBjb250YWluZXIgd2luZG93LgorICAgICAg
ICBUaGlzIGlzIGNvdmVyZWQgYnkgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbC4KKworICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IEFkZCBvY2Ns
dXNpb25zIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFN1YnN0cmFjdAorICAgICAg
ICB0aGUgb2NjbHVzaW9uIHJlY3RhbmdsZXMgZnJvbSB0aGUgcGx1Z2luIGNvbnRhaW5lciB3aW5k
b3cgY2xpcCByZWdpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzV2lu
ZG93ZWQpOiBSZXR1cm4gd2hldGhlciB0aGUgcGx1Z2luIGlzCisgICAgICAgIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdl
KTogU2F2ZSB0aGUgcGFzc2VkIGluIG9jY2x1c2lvbnMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKTogUGFzcyBhbHNv
IHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRkIGlzV2luZG93ZWQoKSBtZXRob2Qg
YW5kCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCku
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDogQWRkIG9j
Y2x1c2lvbnMgcGFyYW1ldGVyCisgICAgICAgIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KTogSW5pdGlhbGl6ZSBtX2lzV2luZG93ZWQgdG8g
ZmFsc2UuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc1dpbmRvd2VkKTogUmV0dXJu
IHdoZXRoZXIgdGhlIHBsdWdpbiBpcworICAgICAgICB3aW5kb3dlZCBvciBub3QuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IFNhdmUgdGhlIHBhc3Nl
ZCBpbiBvY2NsdXNpb25zLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKTogU2V0IG1faXNXaW5kb3dlZCB0bworICAgICAgICB0cnVlIGlmIGEgcGx1
Z2luIGNvbnRhaW5lciBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFBhc3MgdGhlCisgICAgICAg
IG9jY2x1c2lvbnMgdG8gdGhlIGNvbnRyb2xsZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGQgb2NjbHVzaW9ucworICAgICAgICBwYXJhbWV0ZXIgdG8gV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aWZyYW1lSXNBYm92
ZVBsdWdpbik6IEhlbHBlciBzdGF0aWMgZnVuY3Rpb24gdG8gY2hlY2sgaWYKKyAgICAgICAgdGhl
IGlmcmFtZSBpcyBhYm92ZSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpmcmFtZVZpZXdP
d25lcklGcmFtZVJlbmRlcmVyKTogUmV0dXJuIHRoZSBvd25lciBlbGVtZW50CisgICAgICAgIHJl
bmRlcmVyIG9mIHRoZSBnaXZlbiBGcmFtZVZpZXcgaWYgaXQncyBhbiBpZnJhbWUuCisgICAgICAg
IChXZWJLaXQ6OmJ1aWxkWkluZGV4U3RhY2spOiBIZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgdGhl
IHJlbmRlcgorICAgICAgICBzdGFjayBvZiBhIGdpdmVuIHJlbmRlcmVyLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcyk6IFJldHVybnMgdGhl
IHNldAorICAgICAgICBvZiBhcmVhcyBvZiB0aGUgcGx1Z2luIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5
IGFuIGlmcmFtZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlk
Q2hhbmdlKTogQ2FsbAorICAgICAgICBnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcygpIGZvciB3
aW5kb3dlZCBwbHVnaW5zIGFuZCBwYXNzIHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBw
bHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UpOiBBZGQKKyAgICAgICAgb2NjbHVzaW9ucyBwYXJhbWV0ZXIuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwogMjAxNi0wMy0xOCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBDYWNoZXMgaW4gU2Fm
YXJpJ3MgRGV2ZWxvcCBtZW51IGRvZXMgbm90IGRpc2FibGUgY2FjaGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGRjNmQzNDMuLjk0NjZhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9wbHVnaW4tPmZyYW1lRGlkRmFpbChyZXF1ZXN0
SUQsIHdhc0NhbmNlbGxlZCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
LCBmbG9hdCBjb250ZW50c1NjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgYmFja2luZ1N0b3JlSGFuZGxlKQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Omdlb21l
dHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0s
IGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucywgZmxvYXQgY29udGVudHNTY2FsZUZh
Y3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSkK
IHsKICAgICBBU1NFUlQobV9wbHVnaW4pOwogCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIH0KIAotICAgIG1fcGx1Z2luLT5nZW9t
ZXRyeURpZENoYW5nZShwbHVnaW5TaXplLCBjbGlwUmVjdCwgcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSk7CisgICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHBsdWdpblNpemUsIGNsaXBS
ZWN0LCBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUp
CkBAIC02NTQsOSArNjU0LDkgQEAgdWludDY0X3QgUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVh
dGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2lu
ZG93SUQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lE
KQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Qcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBS
ZWN0LCB3aW5kb3dJRCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lE
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0
X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCA3MmNmZDg5Li4zMmI0YWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAg
LTExNiwxNCArMTE2LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9t
RGVzdHJ1Y3Rpb24oKSBvdmVycmlkZTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAg
ICB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVp
bnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJp
bGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGZyYW1l
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgZnJhbWVEaWRG
YWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwotICAgIHZvaWQgZ2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgZmxvYXQgY29udGVudHNTY2FsZUZhY3Rvciwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSk7CisgICAg
dm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSk7CiAgICAgdm9pZCBkaWRFdmFsdWF0
ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdFVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWRpcmVjdFJlc3BvbnNlVVJM
U3RyaW5nLCB1aW50MzJfdCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzQ29kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE4ZThjODAuLmEyZWRmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRy
b2xsZXJQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBTZW50IHdoZW4gdGhlIHBsdWctaW4g
Z2VvbWV0cnkgY2hhbmdlcy4KLSAgICBHZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRTaXpl
IHBsdWdpblNpemUsIFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3QsIFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBmbG9hdCBzY2FsZUZhY3RvciwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiYWNraW5nU3RvcmVIYW5kbGUpCisgICAgR2Vv
bWV0cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50U2l6ZSBwbHVnaW5TaXplLCBXZWJDb3JlOjpJbnRS
ZWN0IGNsaXBSZWN0LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnMsIGZsb2F0IHNjYWxl
RmFjdG9yLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhhbmRs
ZSkKIAogICAgICMgU2VudCB3aGVuIHRoZSBwbHVnLWluIHZpc2liaWxpdHkgY2hhbmdlcy4KICAg
ICBWaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY4ZDdlZTUuLmI3ZWIxNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0MzgsNyArMTQzOCw3IEBAIHByaXZhdGU6
CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkNv
bnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOwotICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisgICAgdm9pZCB3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpOwogICAgIHZv
aWQgd2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50
NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjU5ZDQwOC4uNjczNjg3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNTEsNyArMzUxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFgxMSkKICAgICAjIFgxMSB3aW5kb3dlZCBwbHVnaW4gbWVzc2FnZXMKICAg
ICBDcmVhdGVQbHVnaW5Db250YWluZXIoKSAtPiAodWludDY0X3Qgd2luZG93SUQpCi0gICAgV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwg
V2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCisgICAgV2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2Vi
Q29yZTo6SW50UmVjdCBjbGlwUmVjdCwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lv
bnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogICAgIFdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENo
YW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDgx
MjgyMmYuLjIxZWY0NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdWludDY0X3Qp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKaW5kZXggMmRiYWUwNS4uZTJlZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQogICAg
IHBsdWdpbldpbmRvd01hcCgpLnNldCh3aW5kb3dJRCwgc29ja2V0KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9j
Y2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewogICAgIEd0a1dpZGdldCogcGx1Z2luID0g
cGx1Z2luV2luZG93TWFwKCkuZ2V0KHdpbmRvd0lEKTsKICAgICBpZiAoIXBsdWdpbikKQEAgLTEx
Niw2ICsxMTYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWUKICAgICBpZiAoZ3RrX3dpZGdl
dF9nZXRfcmVhbGl6ZWQocGx1Z2luKSkgewogICAgICAgICBHZGtSZWN0YW5nbGUgY2xpcCA9IGNs
aXBSZWN0OwogICAgICAgICBjYWlyb19yZWdpb25fdCogY2xpcFJlZ2lvbiA9IGNhaXJvX3JlZ2lv
bl9jcmVhdGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0
IDogb2NjbHVzaW9ucykgeworICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIG9jY2x1c2lvbiA9IHJl
Y3Q7CisgICAgICAgICAgICBjYWlyb19yZWdpb25fc3VidHJhY3RfcmVjdGFuZ2xlKGNsaXBSZWdp
b24sICZvY2NsdXNpb24pOworICAgICAgICB9CiAgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29t
YmluZV9yZWdpb24oZ3RrX3dpZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAs
IDApOwogICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBiOWIyOTZjLi5jYmViYTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc3NywxMSArNzc3LDE1IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW46OndhbnRzV2hlZWxFdmVudHMoKQogICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2lu
UXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpXYW50c1doZWVsRXZlbnRzKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0
ZWQpOwogCi0gICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3Qg
PT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAocGx1Z2luU2l6ZSA9PSBtX3BsdWdpblNpemUgJiYg
bV9jbGlwUmVjdCA9PSBjbGlwUmVjdAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAg
ICAgICAmJiBtX29jY2x1c2lvbnMgPT0gb2NjbHVzaW9ucworI2VuZGlmCisgICAgICAgICYmIG1f
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7
CiAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8uCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
OTcsOCArODAxLDExIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmCiAgICAgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybTsKIAogI2lmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUoWDExKQorICAgIG1fb2NjbHVzaW9ucyA9IG9jY2x1c2lvbnM7CiAgICAg
SW50UG9pbnQgZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50KEludFBvaW50KCkpOwogICAgIG1fZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlcyA9IEludFJlY3QoZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzLCBtX3BsdWdpblNpemUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob2NjbHVz
aW9ucyk7CiAjZW5kaWYKIAogICAgIHBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmgKaW5kZXggYmY1NjlmZS4uMmM5YzQ0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTc4LDcgKzc4LDYgQEAgcHVibGljOgogCiAjaWZuZGVmIE5QX05PX0NBUkJPTgog
ICAgIFdpbmRvd1JlZiB3aW5kb3dSZWYoKSBjb25zdDsKLSAgICBib29sIGlzV2luZG93QWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dIYXNGb2N1czsgfQogICAgIHZvaWQgdXBkYXRlRmFr
ZVdpbmRvd0JvdW5kcygpOwogCiAgICAgc3RhdGljIE5ldHNjYXBlUGx1Z2luKiBuZXRzY2FwZVBs
dWdpbkZyb21XaW5kb3coV2luZG93UmVmKTsKQEAgLTg5LDYgKzg4LDcgQEAgcHVibGljOgogCiAj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlczsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYgb2NjbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb2NjbHVzaW9uczsgfQogI2VuZGlmCiAg
ICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Ns
aXBSZWN0OyB9CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGx1Z2luU2l6ZTsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGV2YWx1YXRlKE5QT2JqZWN0KiwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywgTlBWYXJpYW50
KiByZXN1bHQpOwogICAgIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgYm9v
bCBpc011dGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1dpbmRvd2VkOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc1dpbmRvd2VkOyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX2lzVmlzaWJsZTsgfQogCiAgICAgc3RhdGljIHZvaWQgc2V0U2V0RXhjZXB0aW9uRnVuY3Rp
b24odm9pZCAoKikoY29uc3QgU3RyaW5nJikpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZTsKICAgICBib29sIHdh
bnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZp
ZXdUcmFuc2Zvcm0pIG92ZXJyaWRlOworICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKSBvdmVy
cmlkZTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29s
IHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CkBAIC0yOTksNiArMjk5LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwog
CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+IG1fb2NjbHVzaW9uczsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZnJhbWVSZWN0SW5XaW5k
b3dDb29yZGluYXRlczsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwCmluZGV4IDg2ZGU4YmUuLjM3N2I3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblgx
MTo6Z2VvbWV0cnlEaWRDaGFuZ2UoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgd2luZG93
SUQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oR0RLX1dJTkRPV19YSUQoZ3RrX3BsdWdfZ2V0X3Nv
Y2tldF93aW5kb3coR1RLX1BMVUcobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkpKSk7CiAjZW5kaWYK
LSAgICAgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4u
Y2xpcFJlY3QoKSwgd2luZG93SUQpOworICAgICAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dD
b29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCBtX3BsdWdpbi5vY2NsdXNpb25zKCks
IHdpbmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY3LDcgKzI2Nyw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHdpbmRv
d0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9z
b2NrZXRfd2luZG93KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlm
CiAgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRD
aGFuZ2UobV9wbHVnaW4uaXNWaXNpYmxlKCksIHdpbmRvd0lEKTsKLSAgICBtX3BsdWdpbi5jb250
cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVS
ZWN0SW5XaW5kb3dDb29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7
CisgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xp
cFJlY3QoKSwgbV9wbHVnaW4ub2NjbHVzaW9ucygpLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgTmV0
c2NhcGVQbHVnaW5YMTE6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKaW5kZXggYzI2MzllOC4uNzkwN2ZiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNDIsOCAr
MTQyLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgp
IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZyYW1lRGlk
RmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZjE5
ZjMxLi41ZGMyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTI5LDcgKzkyOSw3IEBAIEludFJlY3QgUERGUGx1Z2lu
Ojpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNU
b1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0K
IAotdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pCit2b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsK
ICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtOwogICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDZlMGNiOWMuLjIxYjYyM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE0NCwx
MiArMTQ0LDE1IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWctaW4g
aXMgdHJhbnNwYXJlbnQgb3Igbm90LgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkg
PSAwOwogCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIGlzIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0ID0gMDsKKwogICAgIC8v
IFJldHVybnMgd2hldGhlciB3ZSBzaG91bGQgc2VuZCB3aGVlbCBldmVudHMgdG8gdGhpcyBwbHVn
LWluLgogICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBpdHMgZ2VvbWV0cnkgaGFzIGNoYW5nZWQuIFRoZSBjbGlw
IHJlY3QgaXMgaW4gcGx1Zy1pbiBjb29yZGluYXRlcywgYW5kIHRoZSBhZmZpbmUgdHJhbnNmb3Jt
IGNhbiBiZSB1c2VkCiAgICAgLy8gdG8gY29udmVydCBmcm9tIHJvb3QgdmlldyBjb29yZGluYXRl
cyB0byBwbHVnLWluIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRv
Um9vdFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVz
aW9ucykgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBpdCBoYXMgYmVlbiBl
eHBsaWNpdGx5IGhpZGRlbiBvciBzaG93bi4gKE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBjYWxsZWQg
d2hlbiB0aGUgcGx1Zy1pbiBiZWNvbWVzIG9ic2N1cmVkIGZyb20gdmlldyBvbiBzY3JlZW4uKQog
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaAppbmRleCA2ZmEwNTg2Li5lMmY0MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE0Niw3ICsxNDYs
NyBAQCBwdWJsaWM6CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgLy8gQ3JlYXRl
IGEgcGx1Z2luIGNvbnRhaW5lciBmb3Igd2luZG93ZWQgcGx1Z2lucwogICAgIHZpcnR1YWwgdWlu
dDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lE
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1
aW50NjRfdCB3aW5kb3dJRCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpblZp
c2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSA9IDA7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHAKaW5kZXggM2I1OGUyMC4uZjM3YmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC03MSw2ICs3MSw3IEBA
IFBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJv
b2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQogICAgICwgbV9yZW1vdGVMYXllckNsaWVudElEKDApCiAg
ICAgLCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwg
bV9pc1Jlc3RhcnRlZFByb2Nlc3MoaXNSZXN0YXJ0ZWRQcm9jZXNzKQorICAgICwgbV9pc1dpbmRv
d2VkKGZhbHNlKQogewogfQogCkBAIC0yNTcsNiArMjU4LDExIEBAIGJvb2wgUGx1Z2luUHJveHk6
OmlzVHJhbnNwYXJlbnQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBQbHVnaW5Qcm94
eTo6aXNXaW5kb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNXaW5kb3dlZDsKK30KKwog
Ym9vbCBQbHVnaW5Qcm94eTo6d2FudHNXaGVlbEV2ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fd2Fu
dHNXaGVlbEV2ZW50czsKQEAgLTI4MywxMiArMjg5LDIyIEBAIHZvaWQgUGx1Z2luUHJveHk6Omdl
b21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1Zh
bGlkRGF0YSA9IGZhbHNlOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdl
KG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBj
b250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdpbkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2lu
SW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucyA9IG1fb2NjbHVzaW9uczsKKyNlbHNlCisgICAgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnM7CisjZW5kaWYKKworICAgIG1fY29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6
Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zLCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdp
bkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblByb3h5
OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtKQordm9pZCBQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiBvY2NsdXNpb25zKQogewotICAgIGlmIChwbHVnaW5TaXplID09IG1fcGx1Z2luU2l6
ZSAmJiBtX2NsaXBSZWN0ID09IGNsaXBSZWN0ICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7CisgICAgaWYgKHBsdWdpblNpemUgPT0g
bV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QKKyNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKKyAgICAgICAgJiYgbV9vY2NsdXNpb25zID09IG9jY2x1c2lvbnMKKyNlbmRp
ZgorICAgICAgICAmJiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybSkgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjk2LDYgKzMxMiwxMSBAQCB2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbAog
ICAgIG1fcGx1Z2luU2l6ZSA9IHBsdWdpblNpemU7CiAgICAgbV9jbGlwUmVjdCA9IGNsaXBSZWN0
OwogICAgIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFu
c2Zvcm07CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgbV9vY2NsdXNpb25zID0g
b2NjbHVzaW9uczsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG9jY2x1c2lvbnMpOworI2VuZGlm
CiAKICAgICBnZW9tZXRyeURpZENoYW5nZSgpOwogfQpAQCAtNjk5LDExICs3MjAsMTIgQEAgdm9p
ZCBQbHVnaW5Qcm94eTo6c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c2JhclRl
eHQpCiB2b2lkIFBsdWdpblByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdp
bmRvd0lEKQogewogICAgIHdpbmRvd0lEID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250
YWluZXIoKTsKKyAgICBtX2lzV2luZG93ZWQgPSB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRf
dCB3aW5kb3dJRCkKK3ZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50
NjRfdCB3aW5kb3dJRCkKIHsKLSAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpOworICAgIGNvbnRyb2xs
ZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0
LCBvY2NsdXNpb25zLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2Vk
UGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CmluZGV4IDcyZGE5N2EuLjhkMDI5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04Myw4ICs4Myw5IEBAIHByaXZhdGU6CiAgICAg
UGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGJvb2wg
aXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZShi
b29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmco
dWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50
NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKQEAgLTE4MCw3ICsx
ODEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAg
ICAgdm9pZCBjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKTsKLSAgICB2
b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qg
d2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2
NF90IHdpbmRvd0lEKTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5n
ZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpOwogI2VuZGlmCiAKQEAgLTIwNSw2
ICsyMDYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1pbiBjb29yZGlu
YXRlcy4KICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+IG1fb2NjbHVzaW9uczsKKyNlbmRpZgorCiAgICAgLy8gVGhpcyBpcyB0aGUg
YmFja2luZyBzdG9yZSB0aGF0IHdlIHBhaW50IHdoZW4gd2UncmUgdG9sZCB0byBwYWludC4KICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JhY2tpbmdTdG9yZTsKIApAQCAtMjM0LDYgKzIz
OSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFByb2Nlc3M7
CisKKyAgICBib29sIG1faXNXaW5kb3dlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlZTg0M2QuLjNkMzhiZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMu
aW4KQEAgLTc1LDcgKzc1LDcgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIENyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJRCkK
IAogICAgICMgVXBkYXRlIGdlb21ldHJ5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQKLSAgICBX
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0
LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBX
ZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2NjbHVz
aW9ucywgdWludDY0X3Qgd2luZG93SUQpCiAKICAgICAjIFVwZGF0ZSB2aXNpYmlsaXR5IG9mIHdp
bmRvd2VkIHBsdWdpbiB3aWRnZXQKICAgICBXaW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFu
Z2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDY4ZWEyMzMuLjZlNDA0
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMDk2LDYgKzEwOTcsMTA0IEBAIGJvb2wgUGx1Z2luVmlldzo6dHJhbnNm
b3Jtc0FmZmVjdEZyYW1lUmVjdCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9v
bCBpZnJhbWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYg
aWZyYW1lWkluZGV4U3RhY2ssIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1
Z2luWkluZGV4U3RhY2spCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZnJhbWVaSW5k
ZXhTdGFjay5zaXplKCkgJiYgaSA8IHBsdWdpblpJbmRleFN0YWNrLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIC8vIFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiBXZSB3YW50
IHRvIGl0ZXJhdGUgcm9vdC1kb3dud2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20gdGhl
IGVuZC4KKyAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVTdGFja1Jvb3RPYmplY3Qg
PSBpZnJhbWVaSW5kZXhTdGFja1tpZnJhbWVaSW5kZXhTdGFjay5zaXplKCkgLSAxIC0gaV07Cisg
ICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luU3RhY2tSb290T2JqZWN0ID0gcGx1Z2lu
WkluZGV4U3RhY2tbcGx1Z2luWkluZGV4U3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBp
ZiAoaWZyYW1lU3RhY2tSb290T2JqZWN0ID09IHBsdWdpblN0YWNrUm9vdE9iamVjdCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUg
c3RhY2sgdGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBq
dXN0IGJlbG93IHRoZSBsb3dlc3QgY29tbWVudCBhbmNlc3Rvci4KKyAgICAgICAgLy8gRGV0ZXJt
aW5lIHdoaWNoIHNob3VsZCBiZSBvbiB0b3AuCisgICAgICAgIGlmIChpZnJhbWVTdGFja1Jvb3RP
YmplY3QtPnN0eWxlKCkuekluZGV4KCkgPiBwbHVnaW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCku
ekluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGlmcmFtZVN0
YWNrUm9vdE9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSA8IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+
c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFj
a3MgYmVoaW5kIHRoZSBpZnJhbWUuIFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxp
dHkgd2l0aCBJRS4KKyAgICAgICAgaWYgKHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS5w
b3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAvLyBUaGUgMCd0aCBl
bGVtZW50cyBvZiB0aGVzZSBSZW5kZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2lu
IG5vZGUgYW5kIHRoZSBpZnJhbWUuCisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBs
dWdpblJlbmRlck9iamVjdCA9IHBsdWdpblpJbmRleFN0YWNrWzBdOworICAgICAgICAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVaSW5kZXhTdGFja1sw
XTsKKworICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgo
KSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEluc3BlY3QgdGhlIGRvY3VtZW50IG9yZGVyLiBMYXRlciBvcmRlciBtZWFucyBo
aWdoZXIgc3RhY2tpbmcuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0gaWZy
YW1lU3RhY2tSb290T2JqZWN0LT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcGx1Z2luU3Rh
Y2tSb290T2JqZWN0LT5wYXJlbnQoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBSZW5kZXJPYmpl
Y3QqIGNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocGFyZW50KS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYg
KGNoaWxkID09IGlmcmFtZVN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoY2hpbGQgPT0gcGx1Z2luU3RhY2tSb290T2JqZWN0KQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZyYW1lVmlld093bmVySUZyYW1lUmVu
ZGVyZXIoY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit7CisgICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSBmcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAgaWYgKCFlbGVt
ZW50IHx8ICFlbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSA/IGVs
ZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOworfQorCitzdGF0aWMgdm9pZCBidWlsZFpJbmRl
eFN0YWNrKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3Qq
PiYgekluZGV4U3RhY2spCit7CisgICAgekluZGV4U3RhY2suY2xlYXIoKTsKKyAgICB3aGlsZSAo
cmVuZGVyZXIpIHsKKyAgICAgICAgekluZGV4U3RhY2suYXBwZW5kKHJlbmRlcmVyKTsKKyAgICAg
ICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisgICAgfQorfQorCit2b2lkIFBsdWdp
blZpZXc6OmdldE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVz
aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIXBhcmVudCgpIHx8ICFwYXJlbnQoKS0+aXNGcmFtZVZp
ZXcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3ID0g
ZG93bmNhc3Q8RnJhbWVWaWV3PihwYXJlbnQoKSk7CisKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gcGx1Z2luWkluZGV4U3RhY2s7CisgICAgYnVpbGRaSW5kZXhTdGFjayhtX3BsdWdp
bkVsZW1lbnQtPnJlbmRlcmVyKCksIHBsdWdpblpJbmRleFN0YWNrKTsKKworICAgIGNvbnN0IElu
dFJlY3QmIHBsdWdpblJlY3QgPSBmcmFtZVJlY3QoKTsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gaWZyYW1lWkluZGV4U3RhY2s7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6
IHBhcmVudEZyYW1lVmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAvLyBXZSBvbmx5IGNhcmUg
YWJvdXQgRnJhbWVWaWV3cyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZpZXdzLgor
ICAgICAgICBpZiAoIWNoaWxkLT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGZyYW1lVmlld093bmVy
SUZyYW1lUmVuZGVyZXIoZG93bmNhc3Q8RnJhbWVWaWV3PihjaGlsZC5nZXQoKSkpOworICAgICAg
ICBpZiAoIWlmcmFtZVJlbmRlcmVyIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGlm
cmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
LmludGVyc2VjdHMocGx1Z2luUmVjdCkpIHsKKyAgICAgICAgICAgIGJ1aWxkWkluZGV4U3RhY2so
aWZyYW1lUmVuZGVyZXIsIGlmcmFtZVpJbmRleFN0YWNrKTsKKworICAgICAgICAgICAgaWYgKGlm
cmFtZUlzQWJvdmVQbHVnaW4oaWZyYW1lWkluZGV4U3RhY2ssIHBsdWdpblpJbmRleFN0YWNrKSkg
eworICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJveCogcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJCb3g+KGlmcmFtZVJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2lu
dCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOworICAgICAg
ICAgICAgICAgIHBvaW50Lm1vdmUoLXBsdWdpblJlY3QueCgpLCAtcGx1Z2luUmVjdC55KCkpOwor
ICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShyZW5kZXJlci0+d2lkdGgoKSwgcmVuZGVyZXIt
PmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBvY2NsdXNpb25zLmFwcGVuZChJbnRSZWN0KHBv
aW50LCBzaXplKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hhbmdlKCkKIHsKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCB8fCAhbV9wbHVnaW4gfHwgIXBhcmVudCgpKQpAQCAtMTEyNCw4ICsxMjIzLDEyIEBA
IHZvaWQgUGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgaWYgKCFj
bGlwUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjbGlwUmVjdCA9IGJvdW5kc1JlY3QoKTsK
ICAgICB9Ci0gICAgCi0gICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHNpemUoKSwgY2xp
cFJlY3QsIHRyYW5zZm9ybSk7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gb2NjbHVzaW9uczsKKyAg
ICBpZiAobV9wbHVnaW4tPmlzV2luZG93ZWQoKSkKKyAgICAgICAgZ2V0T2NjbHVzaW9uUmVjdHNC
eUlGcmFtZXMob2NjbHVzaW9ucyk7CisKKyAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2Uo
c2l6ZSgpLCBjbGlwUmVjdCwgdHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3Ojp2aWV3VmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC0xNzA1LDkgKzE4MDgsOSBAQCB1
aW50NjRfdCBQbHVnaW5WaWV3OjpjcmVhdGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3
aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQordm9pZCBQbHVnaW5WaWV3Ojp3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpCiB7Ci0gICAgbV93ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpKTsKKyAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShmcmFtZVJlY3QsIGNsaXBSZWN0LCBvY2NsdXNpb25zLCB3aW5kb3dJRCkpOwogfQogCiB2b2lk
IFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlz
aWJsZSwgdWludDY0X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAzMDY4ZjA1Li4xMzZhYzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTIyNiw3ICsyMjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkg
b3ZlcnJpZGU7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgdWludDY0X3QgY3Jl
YXRlUGx1Z2luQ29udGFpbmVyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJ
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2Uo
Ym9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICNlbmRpZgogCkBA
IC0yNDAsNiArMjQwLDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZl
bnQ+IGNyZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKIAorICAgIC8v
IFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24g
YnkgdGhlIHBsdWdpbiAoImN1dG91dHMiKS4gVGhpcyBoZWxwcyBpbXBsZW1lbnQgdGhlICJpZnJh
bWUgc2hpbSIKKyAgICAvLyB0ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdp
biB3aXRoIGNvbnRlbnQgZnJvbSB0aGUgcGFnZS4gSWZyYW1lIGVsZW1lbnRzIHNob3VsZCBvY2Ns
dWRlIHBsdWdpbnMgd2hlbiB0aGV5IG9jY3VyCisgICAgLy8gaGlnaGVyIGluIHRoZSBzdGFja2lu
ZyBvcmRlci4KKyAgICB2b2lkIGdldE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYpIGNvbnN0OworCiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAg
ICAgV2ViUGFnZSogbV93ZWJQYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274406</attachid>
            <date>2016-03-18 04:41:29 -0700</date>
            <delta_ts>2016-03-18 04:53:44 -0700</delta_ts>
            <desc>Try to fix mac build</desc>
            <filename>wk2-iframe-shim.diff</filename>
            <type>text/plain</type>
            <size>50069</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjQxZDExLi41ZGM4OTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMt
MTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdpbmRvd2VkIHBsdWdp
bnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnJpbmcgYmFjayBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIGFuZCBza2lwIGl0IGlu
IGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgZXhjZXB0IEdUSysuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTE3ICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdFQjog
Vm9pY2VPdmVyIGRvZXMgbm90IGFubm91bmNlIHNvbWUgV0FJLUFSSUEgZG9jdW1lbnQgc3RydWN0
dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzU3MDAyZS4uNDM0ZWI4MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01MSw2ICs1MSw5IEBAIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVz
dC13aXRoLWNsaWVudC1wcm92aWRlZC1odHRwLWJvZHkuaHRtbCBbIFNraXAgXQogZmFzdC9oYXJu
ZXNzL3VpLXNpZGUtc2NyaXB0cy5odG1sIFsgU2tpcCBdCiBmYXN0L2hhcm5lc3MvY29uY3VycmVu
dC11aS1zaWRlLXNjcmlwdHMuaHRtbCBbIFNraXAgXQogCisjIE9ubHkgR1RLKyBzdXBwb3J0cyBp
ZnJhbWUgc2hpbXMuCitwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIFsgU2tpcCBdCisKICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIHRl
c3RzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMTIyMmQ1Li4yOTA5MjM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcwNSwzICsyNzA1LDUg
QEAgZmFzdC9tdWx0aWNvbC9tdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVyLWZvci1pbnB1
dC5odG1sIFsgUGFzcyBdCiAKICMgVGhpcyB0ZXN0IHJlbGllcyBvbiBpT1Mtc3BlY2lmaWMgZm9u
dCBmYWxsYmFjay4KIGZhc3QvdGV4dC9hcmFiaWMtYmxhY2tsaXN0ZWQtZXhwZWN0ZWQuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCisKK3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwgWyBQ
YXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjIyYTc4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCkBAIC0wLDAgKzEsMjYzIEBACis8aHRtbD48aGVh
ZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0gW107CisgICAgdmFyIGNsaWNr
cyA9IFtdOworCisgICAgdmFyIGhlaWdodCA9IDEwMDsKKyAgICB2YXIgd2lkdGggPSAxMDA7Cisg
ICAgdmFyIGl0ZW1zID0gMDsKKworICAgIGZ1bmN0aW9uIG1ha2VQbHVnaW5FbGVtZW50KCkKKyAg
ICB7CisgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZW1iZWQnKTsKKyAg
ICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N3Zl9lbWJlZF8nICsgaXRlbXMpOworICAgICAg
ICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRy
aWJ1dGUoJ2hlaWdodCcsIGhlaWdodCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3dt
b2RlJywgJ3dpbmRvdycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnbG9vcCcsICdmYWxzZScp
OworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291cmNlcy9zaW1wbGVfYmxhbmsu
c3dmJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2FwcGxpY2F0aW9uL3gtc2hv
Y2t3YXZlLWZsYXNoJyk7CisgICAgICAgIHJldHVybiBmOworICAgIH0KKworICAgIGZ1bmN0aW9u
IG1ha2VQbHVnaW5FbGVtZW50V2l0aEhpZ2hlclpJbmRleCgpCisgICAgeworICAgICAgICB2YXIg
ZiA9IG1ha2VQbHVnaW5FbGVtZW50KCk7CisgICAgICAgIGYuc3R5bGUuekluZGV4ID0gMTAwMDsK
KyAgICAgICAgZi5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisgICAgICAgIHJldHVybiBm
OworICAgIH0KKworICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKQorICAgIHsKKyAgICAgICAg
dmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgaS5zdHls
ZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOwor
ICAgICAgICBpLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIGkuc3R5bGUud2lkdGggPSAn
ODBweCc7CisgICAgICAgIGkuc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBpLnNldEF0
dHJpYnV0ZSgnZnJhbWVib3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3Jj
JywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VJZCkKKyAgICB7DQorICAgICAg
ICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvLnN0eWxl
LnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgby5zdHlsZS50b3AgPSAnMTBweCc7Cisg
ICAgICAgIG8uc3R5bGUubGVmdCA9ICczMHB4JzsKKyAgICAgICAgby5zdHlsZS53aWR0aCA9ICc4
MHB4JzsKKyAgICAgICAgby5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlk
ZGVuJzsKKyAgICAgICAgby5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1
dHRvbicgKyBjYXNlSWQgKyAnIiAnICsKKyAgICAgICAgICAgICdvbmNsaWNrPSJkb0NsaWNrKCcg
KyBjYXNlSWQgKworICAgICAgICAgICAgJyk7IiB2YWx1ZT0iY2xpY2ttZSIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7Ii8+JzsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGFw
cGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwgb3Zlcmxh
eUluc2lkZURpdiwgZXhwZWN0Q2xpY2thYmxlLCBjYXNlSWQpCisgICAgeworICAgICAgICB2YXIg
aWQgPSBtYWtlSWZyYW1lRGl2KCk7CisgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoY2FzZUlkKTsKKyAgICAgICAgaWYgKG92ZXJsYXlEaXZaSWZyYW1lKQorICAgICAg
ICAgICAgaWQuc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpJZnJhbWU7CisKKyAgICAgICAgdmFy
IG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBj
YXNlSWQpOworICAgICAgICBvZC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAg
IGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICBvZC5zdHlsZS56SW5kZXggPSBv
dmVybGF5RGl2Wk92ZXJsYXk7CisKKyAgICAgICAgaWYgKG92ZXJsYXlJbnNpZGVEaXYpIHsKKyAg
ICAgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICAgICAgcGFy
ZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3ZlcmxheTsKKworICAgICAgICAgICAg
cGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgICAgIHBhcmVu
dGRpdi5zdHlsZS50b3AgPSAnMHB4JzsKKyAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0
ID0gJzBweCc7CisgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQoaWQpOworICAgICAg
ICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgIHJvb3QuYXBwZW5k
Q2hpbGQocGFyZW50ZGl2KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoaWQpOworICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gYWRkQ2FzZSh4LCB5LCB0YWdzKQorICAgIHsKKyAg
ICAgICAgdmFyIGNhc2VJZCA9IGl0ZW1zOworICAgICAgICBpdGVtcysrOworCisgICAgICAgIHZh
ciBleHBlY3RDbGlja2FibGUgPSB0YWdzLmV4cGVjdCAmJiB0YWdzLmV4cGVjdC5pbmRleE9mKCdV
TkRFUicpID09IC0xOworICAgICAgICBleHBlY3RlZENsaWNrc1tjYXNlSWRdID0gZXhwZWN0Q2xp
Y2thYmxlOw0KKw0KKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKTsKKyAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgcm9vdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7Cisg
ICAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHggKiAod2lkdGggKyA0MCkgKyAncHgnOworICAgICAg
ICByb290LnN0eWxlLnRvcCA9IHkgKiAoaGVpZ2h0ICsgMjApICsgJ3B4JzsKKyAgICAgICAgcm9v
dC5pZCA9IGNhc2VJZDsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgICAgIHZhciBwbHVnaW5EaXZaOworICAgICAgICB2YXIgb3ZlcmxheURpdlpJZnJhbWU7Cisg
ICAgICAgIHZhciBvdmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgIGlmICh0YWdzLnBsdWdpbkxv
d2VyeikgeworICAgICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJs
YXlEaXZaSWZyYW1lID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMjAx
OworICAgICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2luSGlnaGVyeikgeworICAgICAgICAgICAg
cGx1Z2luRGl2WiA9IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOwor
ICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMTAxOworICAgICAgICB9IGVsc2UgaWYg
KHRhZ3MucGx1Z2luRXF1YWx6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAg
ICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2
Wk92ZXJsYXkgPSAxMDA7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgew0KKyAgICAgICAgICAgIC8vIEZvciB0aGlzIHRlc3QgY2FzZSB3ZSBzZXQg
dGhlIHotaW5kZXggZm9yIHRoZSBpZnJhbWUgYW5kIHRoZSBvdmVybGF5CisgICAgICAgICAgICAv
LyB0byBiZSBsb3dlciB0aGFuIHRoZSBwbHVnaW4uCisgICAgICAgICAgICBvdmVybGF5RGl2Wklm
cmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDA7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgYXBwZW5kUGx1Z2luID0gZnVuY3Rpb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcGQ7CisgICAgICAgICAgICBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgeworICAgICAgICAgICAgICAgIHBkID0gbWFrZVBsdWdpbkVsZW1lbnRXaXRo
SGlnaGVyWkluZGV4KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBk
ID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBp
ZiAodGFncy5wbHVnaW5JbnNpZGVEaXYgfHwgcGx1Z2luRGl2WikgeworICAgICAgICAgICAgICAg
IHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
ICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQocGQpCisgICAgICAgICAgICAgICAgaWYgKCF0
YWdzLnBsdWdpbk5vcmVsYXRpdmUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHls
ZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGl2
WikKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IHBsdWdpbkRp
dlo7CisKKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBhcmVudGRpdik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0
aXZlKQorICAgICAgICAgICAgICAgICAgICBwZC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7
CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxpZXIpIHsKKyAgICAgICAg
ICAgIGFwcGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwg
dGFncy5vdmVybGF5SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCk7CisgICAgICAg
ICAgICBhcHBlbmRQbHVnaW4oKTsKKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBhcHBl
bmRQbHVnaW4oKTsKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlPblRpbWVvdXQpIHsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KCdhcHBlbmRPdmVybGF5KCcrb3ZlcmxheURpdlpJZnJh
bWUrJywgJytvdmVybGF5RGl2Wk92ZXJsYXkgKycsICcgKyB0YWdzLm92ZXJsYXlJbnNpZGVEaXYg
KyAnLCAnICsgZXhwZWN0Q2xpY2thYmxlICsgJywgJyArIGNhc2VJZCArICcpJywgMCk7CisgICAg
ICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBhcHBlbmRPdmVybGF5KG92ZXJsYXlE
aXZaSWZyYW1lLCBvdmVybGF5RGl2Wk92ZXJsYXksIHRhZ3Mub3ZlcmxheUluc2lkZURpdiwgZXhw
ZWN0Q2xpY2thYmxlLCBjYXNlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgIH0K
KworICAgIGZ1bmN0aW9uIGRvQ2xpY2soaWQpCisgICAgew0KKyAgICAgICAgY2xpY2tzW2lkXSA9
IHRydWU7CisKKyAgICAgICAgLy8gQ2hlY2sgc3VjY2Vzcy9mYWlsdXJlLgorICAgICAgICB2YXIg
b3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOworICAgICAgICB2YXIg
d2FpdGluZ0Zvck1vcmVDbGlja3MgPSBmYWxzZTsKKyAgICAgICAgdmFyIGs7CisgICAgICAgIGZv
ciAoayBpbiBleHBlY3RlZENsaWNrcykgeworICAgICAgICAgICAgaWYgKGV4cGVjdGVkQ2xpY2tz
W2tdICYmICFjbGlja3Nba10pCisgICAgICAgICAgICAgICAgd2FpdGluZ0Zvck1vcmVDbGlja3Mg
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIWV4cGVjdGVkQ2xpY2tzW2tdICYmIGNsaWNr
c1trXSkgeworICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9DQorDQorICAg
ICAgICBpZiAoIXdhaXRpbmdGb3JNb3JlQ2xpY2tzKSB7CisgICAgICAgICAgICBvdXRwdXQuaW5u
ZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgYWRkQ2FzZSgwLCAwLCB7ZXhwZWN0
OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMCwgeydvdmVybGF5RWFybGll
cic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOiAxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6
J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5Mb3dlcnon
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDAsIHsncGx1
Z2luSGlnaGVyeic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNl
KDAsIDEsIHsnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Cisg
ICAgICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5Mb3dlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2
JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAxLCB7J3Bs
dWdpbkhpZ2hlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5E
RVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMiwgeydwbHVnaW5FcXVhbHonOjEsICdvdmVybGF5
SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAyLCB7J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsICdvdmVybGF5RWFy
bGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDIs
IHsnb3ZlcmxheUVhcmxpZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAg
YWRkQ2FzZSgzLCAyLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwg
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMywgeydwbHVnaW5O
b3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAzLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbklu
c2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwg
MywgeydwbHVnaW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292
ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgzLCAzLCB7J3BsdWdpbkxvd2Vyeic6MSwg
J292ZXJsYXlPblRpbWVvdXQnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBh
ZGRDYXNlKDQsIDAsIHsncGx1Z2luRXhwbGljaXRIaWdoZXJaSW5kZXgnOiAxLCAncGx1Z2luTm9y
ZWxhdGl2ZSc6IDEsICdwbHVnaW5JbnNpZGVEaXYnOiAxLCAnb3ZlcmxheUluc2lkZURpdic6IDEs
IGV4cGVjdDogJ292ZXJsYXkgVU5ERVInIH0pOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQor
CisgICAgLy8gQXV0b21hdGlvbjogdHJ5IHRvIGNsaWNrIG9uIGVhY2ggYnV0dG9uLgorICAgIHZh
ciBuZXh0SWRUb0NsaWNrID0gMDsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZU92ZXIoZWxlbU5hbWUpIHsK
KyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtTmFtZSk7Cisg
ICAgICAgIHZhciB4ID0gZWxlbS5vZmZzZXRMZWZ0ICsgZWxlbS5zY3JvbGxXaWR0aCAvIDI7Cisg
ICAgICAgIHZhciB5ID0gZWxlbS5vZmZzZXRUb3AgKyBlbGVtLnNjcm9sbEhlaWdodCAvIDI7Cisg
ICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudDsKKyAgICAgICAgd2hp
bGUgKG9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgeCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgIH0K
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZG9OZXh0Q2xpY2soKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgaWYgKG5leHRJZFRvQ2xpY2sgPCBleHBlY3RlZENsaWNrcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBuZXh0SWRUb0NsaWNrKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgbmV4dElkVG9DbGljaysr
OworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0K
KyAgICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCisg
ICAgPHA+VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwg
YWJvdmUgYQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBo
aWRkZW4gYnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFy
ZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3Rp
dmVseSwgY2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBzcXVhcmVzLiBZb3Ugc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycKKyAgICBidXR0b25zLjwv
cD4KKworICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZh
aWx1cmUuPC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
b250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rpdj4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkMmRhYjMuLjU1NWUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0wMy0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGlmcmFtZSBzaGltIHRlY2huaXF1
ZSBmb3Igd2luZG93ZWQgcGx1Z2lucyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBhbGxvd3MgdG8gc2hvdyBpZnJhbWVzIG9uIHRv
cCBvZiBhIHdpbmRvd2VkIHBsdWdpbi4gVGhlCisgICAgICAgIGltcGxlbWVudGF0b24gaXMgYmFz
ZWQgb24gY2hyb21pdW0gb25lLCBpdCBjaGVja3MgdGhlIGFyZWFzIG9mIHRoZQorICAgICAgICB3
aW5kb3dlZCBwbHVnaW5zIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5IGFuIGlmcmFtZS4gVGhlIG9jY2x1
c2lvbgorICAgICAgICByZWN0YW5nbGVzIGFyZSBzZW50IHRvIHRoZSBVSSBwcm9jZXNzIHRvIHBy
b3Blcmx5IG1hc2sgdGhlIHBsdWdpbgorICAgICAgICBjb250YWluZXIgd2luZG93LgorICAgICAg
ICBUaGlzIGlzIGNvdmVyZWQgYnkgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbC4KKworICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IEFkZCBvY2Ns
dXNpb25zIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFN1YnN0cmFjdAorICAgICAg
ICB0aGUgb2NjbHVzaW9uIHJlY3RhbmdsZXMgZnJvbSB0aGUgcGx1Z2luIGNvbnRhaW5lciB3aW5k
b3cgY2xpcCByZWdpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzV2lu
ZG93ZWQpOiBSZXR1cm4gd2hldGhlciB0aGUgcGx1Z2luIGlzCisgICAgICAgIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdl
KTogU2F2ZSB0aGUgcGFzc2VkIGluIG9jY2x1c2lvbnMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKTogUGFzcyBhbHNv
IHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRkIGlzV2luZG93ZWQoKSBtZXRob2Qg
YW5kCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCku
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDogQWRkIG9j
Y2x1c2lvbnMgcGFyYW1ldGVyCisgICAgICAgIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KTogSW5pdGlhbGl6ZSBtX2lzV2luZG93ZWQgdG8g
ZmFsc2UuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc1dpbmRvd2VkKTogUmV0dXJu
IHdoZXRoZXIgdGhlIHBsdWdpbiBpcworICAgICAgICB3aW5kb3dlZCBvciBub3QuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IFNhdmUgdGhlIHBhc3Nl
ZCBpbiBvY2NsdXNpb25zLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKTogU2V0IG1faXNXaW5kb3dlZCB0bworICAgICAgICB0cnVlIGlmIGEgcGx1
Z2luIGNvbnRhaW5lciBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFBhc3MgdGhlCisgICAgICAg
IG9jY2x1c2lvbnMgdG8gdGhlIGNvbnRyb2xsZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGQgb2NjbHVzaW9ucworICAgICAgICBwYXJhbWV0ZXIgdG8gV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aWZyYW1lSXNBYm92
ZVBsdWdpbik6IEhlbHBlciBzdGF0aWMgZnVuY3Rpb24gdG8gY2hlY2sgaWYKKyAgICAgICAgdGhl
IGlmcmFtZSBpcyBhYm92ZSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpmcmFtZVZpZXdP
d25lcklGcmFtZVJlbmRlcmVyKTogUmV0dXJuIHRoZSBvd25lciBlbGVtZW50CisgICAgICAgIHJl
bmRlcmVyIG9mIHRoZSBnaXZlbiBGcmFtZVZpZXcgaWYgaXQncyBhbiBpZnJhbWUuCisgICAgICAg
IChXZWJLaXQ6OmJ1aWxkWkluZGV4U3RhY2spOiBIZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgdGhl
IHJlbmRlcgorICAgICAgICBzdGFjayBvZiBhIGdpdmVuIHJlbmRlcmVyLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcyk6IFJldHVybnMgdGhl
IHNldAorICAgICAgICBvZiBhcmVhcyBvZiB0aGUgcGx1Z2luIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5
IGFuIGlmcmFtZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlk
Q2hhbmdlKTogQ2FsbAorICAgICAgICBnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcygpIGZvciB3
aW5kb3dlZCBwbHVnaW5zIGFuZCBwYXNzIHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBw
bHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UpOiBBZGQKKyAgICAgICAgb2NjbHVzaW9ucyBwYXJhbWV0ZXIuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwogMjAxNi0wMy0xOCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBDYWNoZXMgaW4gU2Fm
YXJpJ3MgRGV2ZWxvcCBtZW51IGRvZXMgbm90IGRpc2FibGUgY2FjaGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGRjNmQzNDMuLjk0NjZhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9wbHVnaW4tPmZyYW1lRGlkRmFpbChyZXF1ZXN0
SUQsIHdhc0NhbmNlbGxlZCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
LCBmbG9hdCBjb250ZW50c1NjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgYmFja2luZ1N0b3JlSGFuZGxlKQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Omdlb21l
dHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0s
IGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucywgZmxvYXQgY29udGVudHNTY2FsZUZh
Y3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSkK
IHsKICAgICBBU1NFUlQobV9wbHVnaW4pOwogCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIH0KIAotICAgIG1fcGx1Z2luLT5nZW9t
ZXRyeURpZENoYW5nZShwbHVnaW5TaXplLCBjbGlwUmVjdCwgcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSk7CisgICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHBsdWdpblNpemUsIGNsaXBS
ZWN0LCBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUp
CkBAIC02NTQsOSArNjU0LDkgQEAgdWludDY0X3QgUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVh
dGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2lu
ZG93SUQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lE
KQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Qcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBS
ZWN0LCB3aW5kb3dJRCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lE
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0
X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCA3MmNmZDg5Li4zMmI0YWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAg
LTExNiwxNCArMTE2LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9t
RGVzdHJ1Y3Rpb24oKSBvdmVycmlkZTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAg
ICB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVp
bnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJp
bGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGZyYW1l
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgZnJhbWVEaWRG
YWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwotICAgIHZvaWQgZ2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgZmxvYXQgY29udGVudHNTY2FsZUZhY3Rvciwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSk7CisgICAg
dm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSk7CiAgICAgdm9pZCBkaWRFdmFsdWF0
ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdFVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWRpcmVjdFJlc3BvbnNlVVJM
U3RyaW5nLCB1aW50MzJfdCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzQ29kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE4ZThjODAuLmEyZWRmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRy
b2xsZXJQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBTZW50IHdoZW4gdGhlIHBsdWctaW4g
Z2VvbWV0cnkgY2hhbmdlcy4KLSAgICBHZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRTaXpl
IHBsdWdpblNpemUsIFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3QsIFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBmbG9hdCBzY2FsZUZhY3RvciwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiYWNraW5nU3RvcmVIYW5kbGUpCisgICAgR2Vv
bWV0cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50U2l6ZSBwbHVnaW5TaXplLCBXZWJDb3JlOjpJbnRS
ZWN0IGNsaXBSZWN0LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnMsIGZsb2F0IHNjYWxl
RmFjdG9yLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhhbmRs
ZSkKIAogICAgICMgU2VudCB3aGVuIHRoZSBwbHVnLWluIHZpc2liaWxpdHkgY2hhbmdlcy4KICAg
ICBWaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY4ZDdlZTUuLmI3ZWIxNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0MzgsNyArMTQzOCw3IEBAIHByaXZhdGU6
CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkNv
bnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOwotICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisgICAgdm9pZCB3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpOwogICAgIHZv
aWQgd2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50
NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjU5ZDQwOC4uNjczNjg3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNTEsNyArMzUxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFgxMSkKICAgICAjIFgxMSB3aW5kb3dlZCBwbHVnaW4gbWVzc2FnZXMKICAg
ICBDcmVhdGVQbHVnaW5Db250YWluZXIoKSAtPiAodWludDY0X3Qgd2luZG93SUQpCi0gICAgV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwg
V2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCisgICAgV2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2Vi
Q29yZTo6SW50UmVjdCBjbGlwUmVjdCwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lv
bnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogICAgIFdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENo
YW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDgx
MjgyMmYuLjIxZWY0NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdWludDY0X3Qp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKaW5kZXggMmRiYWUwNS4uZTJlZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQogICAg
IHBsdWdpbldpbmRvd01hcCgpLnNldCh3aW5kb3dJRCwgc29ja2V0KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9j
Y2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewogICAgIEd0a1dpZGdldCogcGx1Z2luID0g
cGx1Z2luV2luZG93TWFwKCkuZ2V0KHdpbmRvd0lEKTsKICAgICBpZiAoIXBsdWdpbikKQEAgLTEx
Niw2ICsxMTYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWUKICAgICBpZiAoZ3RrX3dpZGdl
dF9nZXRfcmVhbGl6ZWQocGx1Z2luKSkgewogICAgICAgICBHZGtSZWN0YW5nbGUgY2xpcCA9IGNs
aXBSZWN0OwogICAgICAgICBjYWlyb19yZWdpb25fdCogY2xpcFJlZ2lvbiA9IGNhaXJvX3JlZ2lv
bl9jcmVhdGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0
IDogb2NjbHVzaW9ucykgeworICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIG9jY2x1c2lvbiA9IHJl
Y3Q7CisgICAgICAgICAgICBjYWlyb19yZWdpb25fc3VidHJhY3RfcmVjdGFuZ2xlKGNsaXBSZWdp
b24sICZvY2NsdXNpb24pOworICAgICAgICB9CiAgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29t
YmluZV9yZWdpb24oZ3RrX3dpZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAs
IDApOwogICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBiOWIyOTZjLi5jYmViYTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc3NywxMSArNzc3LDE1IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW46OndhbnRzV2hlZWxFdmVudHMoKQogICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2lu
UXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpXYW50c1doZWVsRXZlbnRzKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0
ZWQpOwogCi0gICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3Qg
PT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAocGx1Z2luU2l6ZSA9PSBtX3BsdWdpblNpemUgJiYg
bV9jbGlwUmVjdCA9PSBjbGlwUmVjdAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAg
ICAgICAmJiBtX29jY2x1c2lvbnMgPT0gb2NjbHVzaW9ucworI2VuZGlmCisgICAgICAgICYmIG1f
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7
CiAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8uCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
OTcsOCArODAxLDExIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmCiAgICAgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybTsKIAogI2lmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUoWDExKQorICAgIG1fb2NjbHVzaW9ucyA9IG9jY2x1c2lvbnM7CiAgICAg
SW50UG9pbnQgZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50KEludFBvaW50KCkpOwogICAgIG1fZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlcyA9IEludFJlY3QoZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzLCBtX3BsdWdpblNpemUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob2NjbHVz
aW9ucyk7CiAjZW5kaWYKIAogICAgIHBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmgKaW5kZXggYmY1NjlmZS4uMmM5YzQ0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTc4LDcgKzc4LDYgQEAgcHVibGljOgogCiAjaWZuZGVmIE5QX05PX0NBUkJPTgog
ICAgIFdpbmRvd1JlZiB3aW5kb3dSZWYoKSBjb25zdDsKLSAgICBib29sIGlzV2luZG93QWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dIYXNGb2N1czsgfQogICAgIHZvaWQgdXBkYXRlRmFr
ZVdpbmRvd0JvdW5kcygpOwogCiAgICAgc3RhdGljIE5ldHNjYXBlUGx1Z2luKiBuZXRzY2FwZVBs
dWdpbkZyb21XaW5kb3coV2luZG93UmVmKTsKQEAgLTg5LDYgKzg4LDcgQEAgcHVibGljOgogCiAj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlczsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYgb2NjbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb2NjbHVzaW9uczsgfQogI2VuZGlmCiAg
ICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Ns
aXBSZWN0OyB9CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGx1Z2luU2l6ZTsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGV2YWx1YXRlKE5QT2JqZWN0KiwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywgTlBWYXJpYW50
KiByZXN1bHQpOwogICAgIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgYm9v
bCBpc011dGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1dpbmRvd2VkOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc1dpbmRvd2VkOyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX2lzVmlzaWJsZTsgfQogCiAgICAgc3RhdGljIHZvaWQgc2V0U2V0RXhjZXB0aW9uRnVuY3Rp
b24odm9pZCAoKikoY29uc3QgU3RyaW5nJikpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZTsKICAgICBib29sIHdh
bnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZp
ZXdUcmFuc2Zvcm0pIG92ZXJyaWRlOworICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKSBvdmVy
cmlkZTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29s
IHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CkBAIC0yOTksNiArMjk5LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwog
CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+IG1fb2NjbHVzaW9uczsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZnJhbWVSZWN0SW5XaW5k
b3dDb29yZGluYXRlczsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwCmluZGV4IDg2ZGU4YmUuLjM3N2I3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblgx
MTo6Z2VvbWV0cnlEaWRDaGFuZ2UoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgd2luZG93
SUQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oR0RLX1dJTkRPV19YSUQoZ3RrX3BsdWdfZ2V0X3Nv
Y2tldF93aW5kb3coR1RLX1BMVUcobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkpKSk7CiAjZW5kaWYK
LSAgICAgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4u
Y2xpcFJlY3QoKSwgd2luZG93SUQpOworICAgICAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dD
b29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCBtX3BsdWdpbi5vY2NsdXNpb25zKCks
IHdpbmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY3LDcgKzI2Nyw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHdpbmRv
d0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9z
b2NrZXRfd2luZG93KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlm
CiAgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRD
aGFuZ2UobV9wbHVnaW4uaXNWaXNpYmxlKCksIHdpbmRvd0lEKTsKLSAgICBtX3BsdWdpbi5jb250
cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVS
ZWN0SW5XaW5kb3dDb29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7
CisgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xp
cFJlY3QoKSwgbV9wbHVnaW4ub2NjbHVzaW9ucygpLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgTmV0
c2NhcGVQbHVnaW5YMTE6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4uaAppbmRleCA1MzFjMGFkLi42NmE2
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0Rl
cHJlY2F0ZWRQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4uaApAQCAtMTIzLDggKzEyMyw5IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICAgICBQ
bGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNUcmFuc3Bh
cmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHdhbnRzV2hlZWxFdmVu
dHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBnZW9tZXRyeURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZp
ZXdUcmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb29jY2x1c2lvbnMp
IG92ZXJyaWRlOwogICAgIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92
ZXJyaWRlOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9E
ZXByZWNhdGVkUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCmluZGV4IGQ0ZDllODQuLmRkNzViNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0Rl
cHJlY2F0ZWRQREZQbHVnaW4ubW0KQEAgLTEyMjMsNyArMTIyMyw3IEBAIEludFJlY3QgUERGUGx1
Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVu
dHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsK
IH0KIAotdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBs
dWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRv
Um9vdFZpZXdUcmFuc2Zvcm0pCit2b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPEludFJlY3Q+JikK
IHsKICAgICBpZiAoc2l6ZSgpID09IHBsdWdpblNpemUgJiYgcGx1Z2luVmlldygpLT5wYWdlU2Nh
bGVGYWN0b3IoKSA9PSBbbV9wZGZMYXllckNvbnRyb2xsZXIgY29udGVudFNjYWxlRmFjdG9yXSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKaW5kZXggYzI2MzllOC4uNzkwN2ZiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNDIsOCAr
MTQyLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgp
IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZyYW1lRGlk
RmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZjE5
ZjMxLi41ZGMyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTI5LDcgKzkyOSw3IEBAIEludFJlY3QgUERGUGx1Z2lu
Ojpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNU
b1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0K
IAotdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pCit2b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsK
ICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtOwogICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDZlMGNiOWMuLjIxYjYyM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE0NCwx
MiArMTQ0LDE1IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWctaW4g
aXMgdHJhbnNwYXJlbnQgb3Igbm90LgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkg
PSAwOwogCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIGlzIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0ID0gMDsKKwogICAgIC8v
IFJldHVybnMgd2hldGhlciB3ZSBzaG91bGQgc2VuZCB3aGVlbCBldmVudHMgdG8gdGhpcyBwbHVn
LWluLgogICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBpdHMgZ2VvbWV0cnkgaGFzIGNoYW5nZWQuIFRoZSBjbGlw
IHJlY3QgaXMgaW4gcGx1Zy1pbiBjb29yZGluYXRlcywgYW5kIHRoZSBhZmZpbmUgdHJhbnNmb3Jt
IGNhbiBiZSB1c2VkCiAgICAgLy8gdG8gY29udmVydCBmcm9tIHJvb3QgdmlldyBjb29yZGluYXRl
cyB0byBwbHVnLWluIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRv
Um9vdFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVz
aW9ucykgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBpdCBoYXMgYmVlbiBl
eHBsaWNpdGx5IGhpZGRlbiBvciBzaG93bi4gKE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBjYWxsZWQg
d2hlbiB0aGUgcGx1Zy1pbiBiZWNvbWVzIG9ic2N1cmVkIGZyb20gdmlldyBvbiBzY3JlZW4uKQog
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaAppbmRleCA2ZmEwNTg2Li5lMmY0MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE0Niw3ICsxNDYs
NyBAQCBwdWJsaWM6CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgLy8gQ3JlYXRl
IGEgcGx1Z2luIGNvbnRhaW5lciBmb3Igd2luZG93ZWQgcGx1Z2lucwogICAgIHZpcnR1YWwgdWlu
dDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lE
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1
aW50NjRfdCB3aW5kb3dJRCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpblZp
c2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSA9IDA7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHAKaW5kZXggM2I1OGUyMC4uZjM3YmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC03MSw2ICs3MSw3IEBA
IFBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJv
b2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQogICAgICwgbV9yZW1vdGVMYXllckNsaWVudElEKDApCiAg
ICAgLCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwg
bV9pc1Jlc3RhcnRlZFByb2Nlc3MoaXNSZXN0YXJ0ZWRQcm9jZXNzKQorICAgICwgbV9pc1dpbmRv
d2VkKGZhbHNlKQogewogfQogCkBAIC0yNTcsNiArMjU4LDExIEBAIGJvb2wgUGx1Z2luUHJveHk6
OmlzVHJhbnNwYXJlbnQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBQbHVnaW5Qcm94
eTo6aXNXaW5kb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNXaW5kb3dlZDsKK30KKwog
Ym9vbCBQbHVnaW5Qcm94eTo6d2FudHNXaGVlbEV2ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fd2Fu
dHNXaGVlbEV2ZW50czsKQEAgLTI4MywxMiArMjg5LDIyIEBAIHZvaWQgUGx1Z2luUHJveHk6Omdl
b21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1Zh
bGlkRGF0YSA9IGZhbHNlOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdl
KG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBj
b250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdpbkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2lu
SW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucyA9IG1fb2NjbHVzaW9uczsKKyNlbHNlCisgICAgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnM7CisjZW5kaWYKKworICAgIG1fY29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6
Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zLCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdp
bkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblByb3h5
OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtKQordm9pZCBQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiBvY2NsdXNpb25zKQogewotICAgIGlmIChwbHVnaW5TaXplID09IG1fcGx1Z2luU2l6
ZSAmJiBtX2NsaXBSZWN0ID09IGNsaXBSZWN0ICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7CisgICAgaWYgKHBsdWdpblNpemUgPT0g
bV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QKKyNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKKyAgICAgICAgJiYgbV9vY2NsdXNpb25zID09IG9jY2x1c2lvbnMKKyNlbmRp
ZgorICAgICAgICAmJiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybSkgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjk2LDYgKzMxMiwxMSBAQCB2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbAog
ICAgIG1fcGx1Z2luU2l6ZSA9IHBsdWdpblNpemU7CiAgICAgbV9jbGlwUmVjdCA9IGNsaXBSZWN0
OwogICAgIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFu
c2Zvcm07CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgbV9vY2NsdXNpb25zID0g
b2NjbHVzaW9uczsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG9jY2x1c2lvbnMpOworI2VuZGlm
CiAKICAgICBnZW9tZXRyeURpZENoYW5nZSgpOwogfQpAQCAtNjk5LDExICs3MjAsMTIgQEAgdm9p
ZCBQbHVnaW5Qcm94eTo6c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c2JhclRl
eHQpCiB2b2lkIFBsdWdpblByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdp
bmRvd0lEKQogewogICAgIHdpbmRvd0lEID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250
YWluZXIoKTsKKyAgICBtX2lzV2luZG93ZWQgPSB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRf
dCB3aW5kb3dJRCkKK3ZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50
NjRfdCB3aW5kb3dJRCkKIHsKLSAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpOworICAgIGNvbnRyb2xs
ZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0
LCBvY2NsdXNpb25zLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2Vk
UGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CmluZGV4IDcyZGE5N2EuLjhkMDI5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04Myw4ICs4Myw5IEBAIHByaXZhdGU6CiAgICAg
UGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGJvb2wg
aXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZShi
b29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmco
dWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50
NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKQEAgLTE4MCw3ICsx
ODEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAg
ICAgdm9pZCBjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKTsKLSAgICB2
b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qg
d2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2
NF90IHdpbmRvd0lEKTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5n
ZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpOwogI2VuZGlmCiAKQEAgLTIwNSw2
ICsyMDYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1pbiBjb29yZGlu
YXRlcy4KICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+IG1fb2NjbHVzaW9uczsKKyNlbmRpZgorCiAgICAgLy8gVGhpcyBpcyB0aGUg
YmFja2luZyBzdG9yZSB0aGF0IHdlIHBhaW50IHdoZW4gd2UncmUgdG9sZCB0byBwYWludC4KICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JhY2tpbmdTdG9yZTsKIApAQCAtMjM0LDYgKzIz
OSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFByb2Nlc3M7
CisKKyAgICBib29sIG1faXNXaW5kb3dlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlZTg0M2QuLjNkMzhiZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMu
aW4KQEAgLTc1LDcgKzc1LDcgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIENyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJRCkK
IAogICAgICMgVXBkYXRlIGdlb21ldHJ5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQKLSAgICBX
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0
LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBX
ZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2NjbHVz
aW9ucywgdWludDY0X3Qgd2luZG93SUQpCiAKICAgICAjIFVwZGF0ZSB2aXNpYmlsaXR5IG9mIHdp
bmRvd2VkIHBsdWdpbiB3aWRnZXQKICAgICBXaW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFu
Z2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDY4ZWEyMzMuLjZlNDA0
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMDk2LDYgKzEwOTcsMTA0IEBAIGJvb2wgUGx1Z2luVmlldzo6dHJhbnNm
b3Jtc0FmZmVjdEZyYW1lUmVjdCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9v
bCBpZnJhbWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYg
aWZyYW1lWkluZGV4U3RhY2ssIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1
Z2luWkluZGV4U3RhY2spCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZnJhbWVaSW5k
ZXhTdGFjay5zaXplKCkgJiYgaSA8IHBsdWdpblpJbmRleFN0YWNrLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIC8vIFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiBXZSB3YW50
IHRvIGl0ZXJhdGUgcm9vdC1kb3dud2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20gdGhl
IGVuZC4KKyAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVTdGFja1Jvb3RPYmplY3Qg
PSBpZnJhbWVaSW5kZXhTdGFja1tpZnJhbWVaSW5kZXhTdGFjay5zaXplKCkgLSAxIC0gaV07Cisg
ICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luU3RhY2tSb290T2JqZWN0ID0gcGx1Z2lu
WkluZGV4U3RhY2tbcGx1Z2luWkluZGV4U3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBp
ZiAoaWZyYW1lU3RhY2tSb290T2JqZWN0ID09IHBsdWdpblN0YWNrUm9vdE9iamVjdCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUg
c3RhY2sgdGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBq
dXN0IGJlbG93IHRoZSBsb3dlc3QgY29tbWVudCBhbmNlc3Rvci4KKyAgICAgICAgLy8gRGV0ZXJt
aW5lIHdoaWNoIHNob3VsZCBiZSBvbiB0b3AuCisgICAgICAgIGlmIChpZnJhbWVTdGFja1Jvb3RP
YmplY3QtPnN0eWxlKCkuekluZGV4KCkgPiBwbHVnaW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCku
ekluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGlmcmFtZVN0
YWNrUm9vdE9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSA8IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+
c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFj
a3MgYmVoaW5kIHRoZSBpZnJhbWUuIFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxp
dHkgd2l0aCBJRS4KKyAgICAgICAgaWYgKHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS5w
b3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAvLyBUaGUgMCd0aCBl
bGVtZW50cyBvZiB0aGVzZSBSZW5kZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2lu
IG5vZGUgYW5kIHRoZSBpZnJhbWUuCisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBs
dWdpblJlbmRlck9iamVjdCA9IHBsdWdpblpJbmRleFN0YWNrWzBdOworICAgICAgICAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVaSW5kZXhTdGFja1sw
XTsKKworICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgo
KSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEluc3BlY3QgdGhlIGRvY3VtZW50IG9yZGVyLiBMYXRlciBvcmRlciBtZWFucyBo
aWdoZXIgc3RhY2tpbmcuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0gaWZy
YW1lU3RhY2tSb290T2JqZWN0LT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcGx1Z2luU3Rh
Y2tSb290T2JqZWN0LT5wYXJlbnQoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBSZW5kZXJPYmpl
Y3QqIGNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocGFyZW50KS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYg
KGNoaWxkID09IGlmcmFtZVN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoY2hpbGQgPT0gcGx1Z2luU3RhY2tSb290T2JqZWN0KQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZyYW1lVmlld093bmVySUZyYW1lUmVu
ZGVyZXIoY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit7CisgICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSBmcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAgaWYgKCFlbGVt
ZW50IHx8ICFlbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSA/IGVs
ZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOworfQorCitzdGF0aWMgdm9pZCBidWlsZFpJbmRl
eFN0YWNrKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3Qq
PiYgekluZGV4U3RhY2spCit7CisgICAgekluZGV4U3RhY2suY2xlYXIoKTsKKyAgICB3aGlsZSAo
cmVuZGVyZXIpIHsKKyAgICAgICAgekluZGV4U3RhY2suYXBwZW5kKHJlbmRlcmVyKTsKKyAgICAg
ICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisgICAgfQorfQorCit2b2lkIFBsdWdp
blZpZXc6OmdldE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVz
aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIXBhcmVudCgpIHx8ICFwYXJlbnQoKS0+aXNGcmFtZVZp
ZXcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3ID0g
ZG93bmNhc3Q8RnJhbWVWaWV3PihwYXJlbnQoKSk7CisKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gcGx1Z2luWkluZGV4U3RhY2s7CisgICAgYnVpbGRaSW5kZXhTdGFjayhtX3BsdWdp
bkVsZW1lbnQtPnJlbmRlcmVyKCksIHBsdWdpblpJbmRleFN0YWNrKTsKKworICAgIGNvbnN0IElu
dFJlY3QmIHBsdWdpblJlY3QgPSBmcmFtZVJlY3QoKTsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gaWZyYW1lWkluZGV4U3RhY2s7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6
IHBhcmVudEZyYW1lVmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAvLyBXZSBvbmx5IGNhcmUg
YWJvdXQgRnJhbWVWaWV3cyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZpZXdzLgor
ICAgICAgICBpZiAoIWNoaWxkLT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGZyYW1lVmlld093bmVy
SUZyYW1lUmVuZGVyZXIoZG93bmNhc3Q8RnJhbWVWaWV3PihjaGlsZC5nZXQoKSkpOworICAgICAg
ICBpZiAoIWlmcmFtZVJlbmRlcmVyIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGlm
cmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
LmludGVyc2VjdHMocGx1Z2luUmVjdCkpIHsKKyAgICAgICAgICAgIGJ1aWxkWkluZGV4U3RhY2so
aWZyYW1lUmVuZGVyZXIsIGlmcmFtZVpJbmRleFN0YWNrKTsKKworICAgICAgICAgICAgaWYgKGlm
cmFtZUlzQWJvdmVQbHVnaW4oaWZyYW1lWkluZGV4U3RhY2ssIHBsdWdpblpJbmRleFN0YWNrKSkg
eworICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJveCogcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJCb3g+KGlmcmFtZVJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2lu
dCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOworICAgICAg
ICAgICAgICAgIHBvaW50Lm1vdmUoLXBsdWdpblJlY3QueCgpLCAtcGx1Z2luUmVjdC55KCkpOwor
ICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShyZW5kZXJlci0+d2lkdGgoKSwgcmVuZGVyZXIt
PmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBvY2NsdXNpb25zLmFwcGVuZChJbnRSZWN0KHBv
aW50LCBzaXplKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hhbmdlKCkKIHsKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCB8fCAhbV9wbHVnaW4gfHwgIXBhcmVudCgpKQpAQCAtMTEyNCw4ICsxMjIzLDEyIEBA
IHZvaWQgUGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgaWYgKCFj
bGlwUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjbGlwUmVjdCA9IGJvdW5kc1JlY3QoKTsK
ICAgICB9Ci0gICAgCi0gICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHNpemUoKSwgY2xp
cFJlY3QsIHRyYW5zZm9ybSk7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gb2NjbHVzaW9uczsKKyAg
ICBpZiAobV9wbHVnaW4tPmlzV2luZG93ZWQoKSkKKyAgICAgICAgZ2V0T2NjbHVzaW9uUmVjdHNC
eUlGcmFtZXMob2NjbHVzaW9ucyk7CisKKyAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2Uo
c2l6ZSgpLCBjbGlwUmVjdCwgdHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3Ojp2aWV3VmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC0xNzA1LDkgKzE4MDgsOSBAQCB1
aW50NjRfdCBQbHVnaW5WaWV3OjpjcmVhdGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3
aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQordm9pZCBQbHVnaW5WaWV3Ojp3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpCiB7Ci0gICAgbV93ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpKTsKKyAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShmcmFtZVJlY3QsIGNsaXBSZWN0LCBvY2NsdXNpb25zLCB3aW5kb3dJRCkpOwogfQogCiB2b2lk
IFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlz
aWJsZSwgdWludDY0X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAzMDY4ZjA1Li4xMzZhYzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTIyNiw3ICsyMjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkg
b3ZlcnJpZGU7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgdWludDY0X3QgY3Jl
YXRlUGx1Z2luQ29udGFpbmVyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJ
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2Uo
Ym9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICNlbmRpZgogCkBA
IC0yNDAsNiArMjQwLDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZl
bnQ+IGNyZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKIAorICAgIC8v
IFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24g
YnkgdGhlIHBsdWdpbiAoImN1dG91dHMiKS4gVGhpcyBoZWxwcyBpbXBsZW1lbnQgdGhlICJpZnJh
bWUgc2hpbSIKKyAgICAvLyB0ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdp
biB3aXRoIGNvbnRlbnQgZnJvbSB0aGUgcGFnZS4gSWZyYW1lIGVsZW1lbnRzIHNob3VsZCBvY2Ns
dWRlIHBsdWdpbnMgd2hlbiB0aGV5IG9jY3VyCisgICAgLy8gaGlnaGVyIGluIHRoZSBzdGFja2lu
ZyBvcmRlci4KKyAgICB2b2lkIGdldE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYpIGNvbnN0OworCiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAg
ICAgV2ViUGFnZSogbV93ZWJQYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274407</attachid>
            <date>2016-03-18 04:53:44 -0700</date>
            <delta_ts>2016-03-21 01:10:07 -0700</delta_ts>
            <desc>Try to fix mac build</desc>
            <filename>wk2-iframe-shim.diff</filename>
            <type>text/plain</type>
            <size>49820</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjQxZDExLi41ZGM4OTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMt
MTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdpbmRvd2VkIHBsdWdp
bnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnJpbmcgYmFjayBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIGFuZCBza2lwIGl0IGlu
IGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgZXhjZXB0IEdUSysuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTE3ICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdFQjog
Vm9pY2VPdmVyIGRvZXMgbm90IGFubm91bmNlIHNvbWUgV0FJLUFSSUEgZG9jdW1lbnQgc3RydWN0
dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzU3MDAyZS4uNDM0ZWI4MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01MSw2ICs1MSw5IEBAIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVz
dC13aXRoLWNsaWVudC1wcm92aWRlZC1odHRwLWJvZHkuaHRtbCBbIFNraXAgXQogZmFzdC9oYXJu
ZXNzL3VpLXNpZGUtc2NyaXB0cy5odG1sIFsgU2tpcCBdCiBmYXN0L2hhcm5lc3MvY29uY3VycmVu
dC11aS1zaWRlLXNjcmlwdHMuaHRtbCBbIFNraXAgXQogCisjIE9ubHkgR1RLKyBzdXBwb3J0cyBp
ZnJhbWUgc2hpbXMuCitwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIFsgU2tpcCBdCisKICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIHRl
c3RzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMTIyMmQ1Li4yOTA5MjM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcwNSwzICsyNzA1LDUg
QEAgZmFzdC9tdWx0aWNvbC9tdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVyLWZvci1pbnB1
dC5odG1sIFsgUGFzcyBdCiAKICMgVGhpcyB0ZXN0IHJlbGllcyBvbiBpT1Mtc3BlY2lmaWMgZm9u
dCBmYWxsYmFjay4KIGZhc3QvdGV4dC9hcmFiaWMtYmxhY2tsaXN0ZWQtZXhwZWN0ZWQuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCisKK3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwgWyBQ
YXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjIyYTc4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCkBAIC0wLDAgKzEsMjYzIEBACis8aHRtbD48aGVh
ZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0gW107CisgICAgdmFyIGNsaWNr
cyA9IFtdOworCisgICAgdmFyIGhlaWdodCA9IDEwMDsKKyAgICB2YXIgd2lkdGggPSAxMDA7Cisg
ICAgdmFyIGl0ZW1zID0gMDsKKworICAgIGZ1bmN0aW9uIG1ha2VQbHVnaW5FbGVtZW50KCkKKyAg
ICB7CisgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZW1iZWQnKTsKKyAg
ICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N3Zl9lbWJlZF8nICsgaXRlbXMpOworICAgICAg
ICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRy
aWJ1dGUoJ2hlaWdodCcsIGhlaWdodCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3dt
b2RlJywgJ3dpbmRvdycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnbG9vcCcsICdmYWxzZScp
OworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291cmNlcy9zaW1wbGVfYmxhbmsu
c3dmJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2FwcGxpY2F0aW9uL3gtc2hv
Y2t3YXZlLWZsYXNoJyk7CisgICAgICAgIHJldHVybiBmOworICAgIH0KKworICAgIGZ1bmN0aW9u
IG1ha2VQbHVnaW5FbGVtZW50V2l0aEhpZ2hlclpJbmRleCgpCisgICAgeworICAgICAgICB2YXIg
ZiA9IG1ha2VQbHVnaW5FbGVtZW50KCk7CisgICAgICAgIGYuc3R5bGUuekluZGV4ID0gMTAwMDsK
KyAgICAgICAgZi5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisgICAgICAgIHJldHVybiBm
OworICAgIH0KKworICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKQorICAgIHsKKyAgICAgICAg
dmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgaS5zdHls
ZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOwor
ICAgICAgICBpLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIGkuc3R5bGUud2lkdGggPSAn
ODBweCc7CisgICAgICAgIGkuc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBpLnNldEF0
dHJpYnV0ZSgnZnJhbWVib3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3Jj
JywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VJZCkKKyAgICB7DQorICAgICAg
ICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvLnN0eWxl
LnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgby5zdHlsZS50b3AgPSAnMTBweCc7Cisg
ICAgICAgIG8uc3R5bGUubGVmdCA9ICczMHB4JzsKKyAgICAgICAgby5zdHlsZS53aWR0aCA9ICc4
MHB4JzsKKyAgICAgICAgby5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlk
ZGVuJzsKKyAgICAgICAgby5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1
dHRvbicgKyBjYXNlSWQgKyAnIiAnICsKKyAgICAgICAgICAgICdvbmNsaWNrPSJkb0NsaWNrKCcg
KyBjYXNlSWQgKworICAgICAgICAgICAgJyk7IiB2YWx1ZT0iY2xpY2ttZSIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7Ii8+JzsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGFw
cGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwgb3Zlcmxh
eUluc2lkZURpdiwgZXhwZWN0Q2xpY2thYmxlLCBjYXNlSWQpCisgICAgeworICAgICAgICB2YXIg
aWQgPSBtYWtlSWZyYW1lRGl2KCk7CisgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoY2FzZUlkKTsKKyAgICAgICAgaWYgKG92ZXJsYXlEaXZaSWZyYW1lKQorICAgICAg
ICAgICAgaWQuc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpJZnJhbWU7CisKKyAgICAgICAgdmFy
IG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBj
YXNlSWQpOworICAgICAgICBvZC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAg
IGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICBvZC5zdHlsZS56SW5kZXggPSBv
dmVybGF5RGl2Wk92ZXJsYXk7CisKKyAgICAgICAgaWYgKG92ZXJsYXlJbnNpZGVEaXYpIHsKKyAg
ICAgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICAgICAgcGFy
ZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3ZlcmxheTsKKworICAgICAgICAgICAg
cGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgICAgIHBhcmVu
dGRpdi5zdHlsZS50b3AgPSAnMHB4JzsKKyAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0
ID0gJzBweCc7CisgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQoaWQpOworICAgICAg
ICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgIHJvb3QuYXBwZW5k
Q2hpbGQocGFyZW50ZGl2KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoaWQpOworICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gYWRkQ2FzZSh4LCB5LCB0YWdzKQorICAgIHsKKyAg
ICAgICAgdmFyIGNhc2VJZCA9IGl0ZW1zOworICAgICAgICBpdGVtcysrOworCisgICAgICAgIHZh
ciBleHBlY3RDbGlja2FibGUgPSB0YWdzLmV4cGVjdCAmJiB0YWdzLmV4cGVjdC5pbmRleE9mKCdV
TkRFUicpID09IC0xOworICAgICAgICBleHBlY3RlZENsaWNrc1tjYXNlSWRdID0gZXhwZWN0Q2xp
Y2thYmxlOw0KKw0KKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKTsKKyAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgcm9vdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7Cisg
ICAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHggKiAod2lkdGggKyA0MCkgKyAncHgnOworICAgICAg
ICByb290LnN0eWxlLnRvcCA9IHkgKiAoaGVpZ2h0ICsgMjApICsgJ3B4JzsKKyAgICAgICAgcm9v
dC5pZCA9IGNhc2VJZDsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgICAgIHZhciBwbHVnaW5EaXZaOworICAgICAgICB2YXIgb3ZlcmxheURpdlpJZnJhbWU7Cisg
ICAgICAgIHZhciBvdmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgIGlmICh0YWdzLnBsdWdpbkxv
d2VyeikgeworICAgICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJs
YXlEaXZaSWZyYW1lID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMjAx
OworICAgICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2luSGlnaGVyeikgeworICAgICAgICAgICAg
cGx1Z2luRGl2WiA9IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOwor
ICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMTAxOworICAgICAgICB9IGVsc2UgaWYg
KHRhZ3MucGx1Z2luRXF1YWx6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAg
ICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2
Wk92ZXJsYXkgPSAxMDA7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgew0KKyAgICAgICAgICAgIC8vIEZvciB0aGlzIHRlc3QgY2FzZSB3ZSBzZXQg
dGhlIHotaW5kZXggZm9yIHRoZSBpZnJhbWUgYW5kIHRoZSBvdmVybGF5CisgICAgICAgICAgICAv
LyB0byBiZSBsb3dlciB0aGFuIHRoZSBwbHVnaW4uCisgICAgICAgICAgICBvdmVybGF5RGl2Wklm
cmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDA7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgYXBwZW5kUGx1Z2luID0gZnVuY3Rpb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcGQ7CisgICAgICAgICAgICBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgeworICAgICAgICAgICAgICAgIHBkID0gbWFrZVBsdWdpbkVsZW1lbnRXaXRo
SGlnaGVyWkluZGV4KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBk
ID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBp
ZiAodGFncy5wbHVnaW5JbnNpZGVEaXYgfHwgcGx1Z2luRGl2WikgeworICAgICAgICAgICAgICAg
IHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
ICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQocGQpCisgICAgICAgICAgICAgICAgaWYgKCF0
YWdzLnBsdWdpbk5vcmVsYXRpdmUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHls
ZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGl2
WikKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IHBsdWdpbkRp
dlo7CisKKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBhcmVudGRpdik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0
aXZlKQorICAgICAgICAgICAgICAgICAgICBwZC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7
CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxpZXIpIHsKKyAgICAgICAg
ICAgIGFwcGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwg
dGFncy5vdmVybGF5SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCk7CisgICAgICAg
ICAgICBhcHBlbmRQbHVnaW4oKTsKKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBhcHBl
bmRQbHVnaW4oKTsKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlPblRpbWVvdXQpIHsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KCdhcHBlbmRPdmVybGF5KCcrb3ZlcmxheURpdlpJZnJh
bWUrJywgJytvdmVybGF5RGl2Wk92ZXJsYXkgKycsICcgKyB0YWdzLm92ZXJsYXlJbnNpZGVEaXYg
KyAnLCAnICsgZXhwZWN0Q2xpY2thYmxlICsgJywgJyArIGNhc2VJZCArICcpJywgMCk7CisgICAg
ICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBhcHBlbmRPdmVybGF5KG92ZXJsYXlE
aXZaSWZyYW1lLCBvdmVybGF5RGl2Wk92ZXJsYXksIHRhZ3Mub3ZlcmxheUluc2lkZURpdiwgZXhw
ZWN0Q2xpY2thYmxlLCBjYXNlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgIH0K
KworICAgIGZ1bmN0aW9uIGRvQ2xpY2soaWQpCisgICAgew0KKyAgICAgICAgY2xpY2tzW2lkXSA9
IHRydWU7CisKKyAgICAgICAgLy8gQ2hlY2sgc3VjY2Vzcy9mYWlsdXJlLgorICAgICAgICB2YXIg
b3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOworICAgICAgICB2YXIg
d2FpdGluZ0Zvck1vcmVDbGlja3MgPSBmYWxzZTsKKyAgICAgICAgdmFyIGs7CisgICAgICAgIGZv
ciAoayBpbiBleHBlY3RlZENsaWNrcykgeworICAgICAgICAgICAgaWYgKGV4cGVjdGVkQ2xpY2tz
W2tdICYmICFjbGlja3Nba10pCisgICAgICAgICAgICAgICAgd2FpdGluZ0Zvck1vcmVDbGlja3Mg
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIWV4cGVjdGVkQ2xpY2tzW2tdICYmIGNsaWNr
c1trXSkgeworICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9DQorDQorICAg
ICAgICBpZiAoIXdhaXRpbmdGb3JNb3JlQ2xpY2tzKSB7CisgICAgICAgICAgICBvdXRwdXQuaW5u
ZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgYWRkQ2FzZSgwLCAwLCB7ZXhwZWN0
OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMCwgeydvdmVybGF5RWFybGll
cic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOiAxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6
J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5Mb3dlcnon
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDAsIHsncGx1
Z2luSGlnaGVyeic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNl
KDAsIDEsIHsnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Cisg
ICAgICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5Mb3dlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2
JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAxLCB7J3Bs
dWdpbkhpZ2hlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5E
RVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMiwgeydwbHVnaW5FcXVhbHonOjEsICdvdmVybGF5
SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAyLCB7J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsICdvdmVybGF5RWFy
bGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDIs
IHsnb3ZlcmxheUVhcmxpZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAg
YWRkQ2FzZSgzLCAyLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwg
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMywgeydwbHVnaW5O
b3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAzLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbklu
c2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwg
MywgeydwbHVnaW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292
ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgzLCAzLCB7J3BsdWdpbkxvd2Vyeic6MSwg
J292ZXJsYXlPblRpbWVvdXQnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBh
ZGRDYXNlKDQsIDAsIHsncGx1Z2luRXhwbGljaXRIaWdoZXJaSW5kZXgnOiAxLCAncGx1Z2luTm9y
ZWxhdGl2ZSc6IDEsICdwbHVnaW5JbnNpZGVEaXYnOiAxLCAnb3ZlcmxheUluc2lkZURpdic6IDEs
IGV4cGVjdDogJ292ZXJsYXkgVU5ERVInIH0pOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQor
CisgICAgLy8gQXV0b21hdGlvbjogdHJ5IHRvIGNsaWNrIG9uIGVhY2ggYnV0dG9uLgorICAgIHZh
ciBuZXh0SWRUb0NsaWNrID0gMDsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZU92ZXIoZWxlbU5hbWUpIHsK
KyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtTmFtZSk7Cisg
ICAgICAgIHZhciB4ID0gZWxlbS5vZmZzZXRMZWZ0ICsgZWxlbS5zY3JvbGxXaWR0aCAvIDI7Cisg
ICAgICAgIHZhciB5ID0gZWxlbS5vZmZzZXRUb3AgKyBlbGVtLnNjcm9sbEhlaWdodCAvIDI7Cisg
ICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudDsKKyAgICAgICAgd2hp
bGUgKG9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgeCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgIH0K
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZG9OZXh0Q2xpY2soKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgaWYgKG5leHRJZFRvQ2xpY2sgPCBleHBlY3RlZENsaWNrcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBuZXh0SWRUb0NsaWNrKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgbmV4dElkVG9DbGljaysr
OworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0K
KyAgICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCisg
ICAgPHA+VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwg
YWJvdmUgYQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBo
aWRkZW4gYnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFy
ZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3Rp
dmVseSwgY2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBzcXVhcmVzLiBZb3Ugc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycKKyAgICBidXR0b25zLjwv
cD4KKworICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZh
aWx1cmUuPC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
b250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rpdj4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkMmRhYjMuLjU1NWUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0wMy0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGlmcmFtZSBzaGltIHRlY2huaXF1
ZSBmb3Igd2luZG93ZWQgcGx1Z2lucyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBhbGxvd3MgdG8gc2hvdyBpZnJhbWVzIG9uIHRv
cCBvZiBhIHdpbmRvd2VkIHBsdWdpbi4gVGhlCisgICAgICAgIGltcGxlbWVudGF0b24gaXMgYmFz
ZWQgb24gY2hyb21pdW0gb25lLCBpdCBjaGVja3MgdGhlIGFyZWFzIG9mIHRoZQorICAgICAgICB3
aW5kb3dlZCBwbHVnaW5zIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5IGFuIGlmcmFtZS4gVGhlIG9jY2x1
c2lvbgorICAgICAgICByZWN0YW5nbGVzIGFyZSBzZW50IHRvIHRoZSBVSSBwcm9jZXNzIHRvIHBy
b3Blcmx5IG1hc2sgdGhlIHBsdWdpbgorICAgICAgICBjb250YWluZXIgd2luZG93LgorICAgICAg
ICBUaGlzIGlzIGNvdmVyZWQgYnkgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbC4KKworICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IEFkZCBvY2Ns
dXNpb25zIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFN1YnN0cmFjdAorICAgICAg
ICB0aGUgb2NjbHVzaW9uIHJlY3RhbmdsZXMgZnJvbSB0aGUgcGx1Z2luIGNvbnRhaW5lciB3aW5k
b3cgY2xpcCByZWdpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzV2lu
ZG93ZWQpOiBSZXR1cm4gd2hldGhlciB0aGUgcGx1Z2luIGlzCisgICAgICAgIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdl
KTogU2F2ZSB0aGUgcGFzc2VkIGluIG9jY2x1c2lvbnMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKTogUGFzcyBhbHNv
IHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRkIGlzV2luZG93ZWQoKSBtZXRob2Qg
YW5kCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCku
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDogQWRkIG9j
Y2x1c2lvbnMgcGFyYW1ldGVyCisgICAgICAgIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KTogSW5pdGlhbGl6ZSBtX2lzV2luZG93ZWQgdG8g
ZmFsc2UuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc1dpbmRvd2VkKTogUmV0dXJu
IHdoZXRoZXIgdGhlIHBsdWdpbiBpcworICAgICAgICB3aW5kb3dlZCBvciBub3QuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IFNhdmUgdGhlIHBhc3Nl
ZCBpbiBvY2NsdXNpb25zLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKTogU2V0IG1faXNXaW5kb3dlZCB0bworICAgICAgICB0cnVlIGlmIGEgcGx1
Z2luIGNvbnRhaW5lciBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFBhc3MgdGhlCisgICAgICAg
IG9jY2x1c2lvbnMgdG8gdGhlIGNvbnRyb2xsZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGQgb2NjbHVzaW9ucworICAgICAgICBwYXJhbWV0ZXIgdG8gV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aWZyYW1lSXNBYm92
ZVBsdWdpbik6IEhlbHBlciBzdGF0aWMgZnVuY3Rpb24gdG8gY2hlY2sgaWYKKyAgICAgICAgdGhl
IGlmcmFtZSBpcyBhYm92ZSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpmcmFtZVZpZXdP
d25lcklGcmFtZVJlbmRlcmVyKTogUmV0dXJuIHRoZSBvd25lciBlbGVtZW50CisgICAgICAgIHJl
bmRlcmVyIG9mIHRoZSBnaXZlbiBGcmFtZVZpZXcgaWYgaXQncyBhbiBpZnJhbWUuCisgICAgICAg
IChXZWJLaXQ6OmJ1aWxkWkluZGV4U3RhY2spOiBIZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgdGhl
IHJlbmRlcgorICAgICAgICBzdGFjayBvZiBhIGdpdmVuIHJlbmRlcmVyLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcyk6IFJldHVybnMgdGhl
IHNldAorICAgICAgICBvZiBhcmVhcyBvZiB0aGUgcGx1Z2luIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5
IGFuIGlmcmFtZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlk
Q2hhbmdlKTogQ2FsbAorICAgICAgICBnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcygpIGZvciB3
aW5kb3dlZCBwbHVnaW5zIGFuZCBwYXNzIHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBw
bHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UpOiBBZGQKKyAgICAgICAgb2NjbHVzaW9ucyBwYXJhbWV0ZXIuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwogMjAxNi0wMy0xOCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBDYWNoZXMgaW4gU2Fm
YXJpJ3MgRGV2ZWxvcCBtZW51IGRvZXMgbm90IGRpc2FibGUgY2FjaGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGRjNmQzNDMuLjk0NjZhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9wbHVnaW4tPmZyYW1lRGlkRmFpbChyZXF1ZXN0
SUQsIHdhc0NhbmNlbGxlZCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
LCBmbG9hdCBjb250ZW50c1NjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgYmFja2luZ1N0b3JlSGFuZGxlKQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Omdlb21l
dHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0s
IGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucywgZmxvYXQgY29udGVudHNTY2FsZUZh
Y3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSkK
IHsKICAgICBBU1NFUlQobV9wbHVnaW4pOwogCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIH0KIAotICAgIG1fcGx1Z2luLT5nZW9t
ZXRyeURpZENoYW5nZShwbHVnaW5TaXplLCBjbGlwUmVjdCwgcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSk7CisgICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHBsdWdpblNpemUsIGNsaXBS
ZWN0LCBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUp
CkBAIC02NTQsOSArNjU0LDkgQEAgdWludDY0X3QgUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVh
dGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2lu
ZG93SUQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lE
KQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Qcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBS
ZWN0LCB3aW5kb3dJRCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lE
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0
X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCA3MmNmZDg5Li4zMmI0YWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAg
LTExNiwxNCArMTE2LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9t
RGVzdHJ1Y3Rpb24oKSBvdmVycmlkZTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAg
ICB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVp
bnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJp
bGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGZyYW1l
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgZnJhbWVEaWRG
YWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwotICAgIHZvaWQgZ2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgZmxvYXQgY29udGVudHNTY2FsZUZhY3Rvciwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSk7CisgICAg
dm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSk7CiAgICAgdm9pZCBkaWRFdmFsdWF0
ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdFVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWRpcmVjdFJlc3BvbnNlVVJM
U3RyaW5nLCB1aW50MzJfdCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzQ29kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE4ZThjODAuLmEyZWRmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRy
b2xsZXJQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBTZW50IHdoZW4gdGhlIHBsdWctaW4g
Z2VvbWV0cnkgY2hhbmdlcy4KLSAgICBHZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRTaXpl
IHBsdWdpblNpemUsIFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3QsIFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBmbG9hdCBzY2FsZUZhY3RvciwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiYWNraW5nU3RvcmVIYW5kbGUpCisgICAgR2Vv
bWV0cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50U2l6ZSBwbHVnaW5TaXplLCBXZWJDb3JlOjpJbnRS
ZWN0IGNsaXBSZWN0LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lvbnMsIGZsb2F0IHNjYWxl
RmFjdG9yLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhhbmRs
ZSkKIAogICAgICMgU2VudCB3aGVuIHRoZSBwbHVnLWluIHZpc2liaWxpdHkgY2hhbmdlcy4KICAg
ICBWaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY4ZDdlZTUuLmI3ZWIxNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0MzgsNyArMTQzOCw3IEBAIHByaXZhdGU6
CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkNv
bnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOwotICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisgICAgdm9pZCB3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpOwogICAgIHZv
aWQgd2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50
NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjU5ZDQwOC4uNjczNjg3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNTEsNyArMzUxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFgxMSkKICAgICAjIFgxMSB3aW5kb3dlZCBwbHVnaW4gbWVzc2FnZXMKICAg
ICBDcmVhdGVQbHVnaW5Db250YWluZXIoKSAtPiAodWludDY0X3Qgd2luZG93SUQpCi0gICAgV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwg
V2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCisgICAgV2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2Vi
Q29yZTo6SW50UmVjdCBjbGlwUmVjdCwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG9jY2x1c2lv
bnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogICAgIFdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENo
YW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDgx
MjgyMmYuLjIxZWY0NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdWludDY0X3Qp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKaW5kZXggMmRiYWUwNS4uZTJlZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQogICAg
IHBsdWdpbldpbmRvd01hcCgpLnNldCh3aW5kb3dJRCwgc29ja2V0KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9j
Y2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogewogICAgIEd0a1dpZGdldCogcGx1Z2luID0g
cGx1Z2luV2luZG93TWFwKCkuZ2V0KHdpbmRvd0lEKTsKICAgICBpZiAoIXBsdWdpbikKQEAgLTEx
Niw2ICsxMTYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWUKICAgICBpZiAoZ3RrX3dpZGdl
dF9nZXRfcmVhbGl6ZWQocGx1Z2luKSkgewogICAgICAgICBHZGtSZWN0YW5nbGUgY2xpcCA9IGNs
aXBSZWN0OwogICAgICAgICBjYWlyb19yZWdpb25fdCogY2xpcFJlZ2lvbiA9IGNhaXJvX3JlZ2lv
bl9jcmVhdGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0
IDogb2NjbHVzaW9ucykgeworICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIG9jY2x1c2lvbiA9IHJl
Y3Q7CisgICAgICAgICAgICBjYWlyb19yZWdpb25fc3VidHJhY3RfcmVjdGFuZ2xlKGNsaXBSZWdp
b24sICZvY2NsdXNpb24pOworICAgICAgICB9CiAgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29t
YmluZV9yZWdpb24oZ3RrX3dpZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAs
IDApOwogICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBiOWIyOTZjLi5jYmViYTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc3NywxMSArNzc3LDE1IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW46OndhbnRzV2hlZWxFdmVudHMoKQogICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2lu
UXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpXYW50c1doZWVsRXZlbnRzKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0
ZWQpOwogCi0gICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3Qg
PT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAocGx1Z2luU2l6ZSA9PSBtX3BsdWdpblNpemUgJiYg
bV9jbGlwUmVjdCA9PSBjbGlwUmVjdAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAg
ICAgICAmJiBtX29jY2x1c2lvbnMgPT0gb2NjbHVzaW9ucworI2VuZGlmCisgICAgICAgICYmIG1f
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7
CiAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8uCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
OTcsOCArODAxLDExIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmCiAgICAgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybTsKIAogI2lmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUoWDExKQorICAgIG1fb2NjbHVzaW9ucyA9IG9jY2x1c2lvbnM7CiAgICAg
SW50UG9pbnQgZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50KEludFBvaW50KCkpOwogICAgIG1fZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlcyA9IEludFJlY3QoZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzLCBtX3BsdWdpblNpemUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob2NjbHVz
aW9ucyk7CiAjZW5kaWYKIAogICAgIHBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmgKaW5kZXggYmY1NjlmZS4uNGI0ZjMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVS
RShYMTEpCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0SW5XaW5kb3dDb29y
ZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlczsg
fQorICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fb2NjbHVzaW9uczsgfQogI2VuZGlmCiAgICAgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaXBSZWN0OyB9CiAgICAgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luU2l6ZTsgfQpA
QCAtMTA3LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlKE5QT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1bHQpOwogICAgIGJvb2wg
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgYm9vbCBpc011dGVkKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc1dpbmRvd2VkOyB9CisgICAg
Ym9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1dpbmRvd2VkOyB9
CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQogCiAg
ICAgc3RhdGljIHZvaWQgc2V0U2V0RXhjZXB0aW9uRnVuY3Rpb24odm9pZCAoKikoY29uc3QgU3Ry
aW5nJikpOwpAQCAtMTk3LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBib29sIGlz
VHJhbnNwYXJlbnQoKSBvdmVycmlkZTsKICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIG92ZXJyaWRl
OworICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1
Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKSBvdmVycmlkZTsKICAgICB2b2lkIHZpc2li
aWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVE
aWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBm
cmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJp
ZGU7CkBAIC0yOTksNiArMzAwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwogCiAjaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fb2NjbHVzaW9uczsKICAg
ICBXZWJDb3JlOjpJbnRSZWN0IG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlczsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IDg2ZGU4YmUu
LjM3N2I3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0y
NDcsNyArMjQ3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6Z2VvbWV0cnlEaWRDaGFuZ2Uo
KQogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgd2luZG93SUQgPSBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oR0RLX1dJTkRPV19YSUQoZ3RrX3BsdWdfZ2V0X3NvY2tldF93aW5kb3coR1RLX1BMVUco
bV9wbGF0Zm9ybVBsdWdpbldpZGdldCkpKSk7CiAjZW5kaWYKLSAgICAgICAgbV9wbHVnaW4uY29u
dHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luLmZyYW1l
UmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJlY3QoKSwgd2luZG93SUQp
OworICAgICAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpLCBtX3BsdWdp
bi5jbGlwUmVjdCgpLCBtX3BsdWdpbi5vY2NsdXNpb25zKCksIHdpbmRvd0lEKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Y
MTE6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHdpbmRvd0lEID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9zb2NrZXRfd2luZG93KEdUS19QTFVH
KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlmCiAgICAgbV9wbHVnaW4uY29udHJv
bGxlcigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UobV9wbHVnaW4uaXNWaXNp
YmxlKCksIHdpbmRvd0lEKTsKLSAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRl
cygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7CisgICAgbV9wbHVnaW4uY29udHJv
bGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luLmZyYW1lUmVj
dEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJlY3QoKSwgbV9wbHVnaW4ub2Nj
bHVzaW9ucygpLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVk
UERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJl
Y2F0ZWRQREZQbHVnaW4uaAppbmRleCA1MzFjMGFkLi42NmE2Mjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQ
bHVnaW4uaApAQCAtMTIzLDggKzEyMyw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUxheWVyKiBwbHVnaW5M
YXllcigpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3Qg
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb29jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlz
aWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZyYW1lRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1
Z2luLm1tCmluZGV4IGQ0ZDllODQuLmRkNzViNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0K
QEAgLTEyMjMsNyArMTIyMyw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigp
IGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJ
bnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIAotdm9pZCBQREZQbHVnaW46
Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pCit2
b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6
ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmll
d1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsKICAgICBpZiAoc2l6ZSgpID09
IHBsdWdpblNpemUgJiYgcGx1Z2luVmlldygpLT5wYWdlU2NhbGVGYWN0b3IoKSA9PSBbbV9wZGZM
YXllckNvbnRyb2xsZXIgY29udGVudFNjYWxlRmFjdG9yXSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5k
ZXggYzI2MzllOC4uNzkwN2ZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNDIsOCArMTQyLDkgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogICAgIFBsYXRm
b3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQg
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNo
YW5nZWQoZmxvYXQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZShi
b29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCByZXF1ZXN0SUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZjE5ZjMxLi41ZGMyY2IzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpA
QCAtOTI5LDcgKzkyOSw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNv
bnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRS
ZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Omdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pCit2b2lk
IFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSwgY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsKICAgICBtX3BsdWdpblRvUm9vdFZp
ZXdUcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwogICAgIG1fcm9vdFZpZXdU
b1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCmluZGV4IDZlMGNiOWMuLjIxYjYyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE0NCwxMiArMTQ0LDE1IEBAIHB1YmxpYzoK
ICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWctaW4gaXMgdHJhbnNwYXJlbnQgb3Igbm90
LgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkgPSAwOwogCisgICAgLy8gUmV0dXJu
cyB3aGV0aGVyIHRoZSBwbHVnLWluIGlzIHdpbmRvd2VkIG9yIG5vdC4KKyAgICB2aXJ0dWFsIGJv
b2wgaXNXaW5kb3dlZCgpIGNvbnN0ID0gMDsKKwogICAgIC8vIFJldHVybnMgd2hldGhlciB3ZSBz
aG91bGQgc2VuZCB3aGVlbCBldmVudHMgdG8gdGhpcyBwbHVnLWluLgogICAgIHZpcnR1YWwgYm9v
bCB3YW50c1doZWVsRXZlbnRzKCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhh
dCBpdHMgZ2VvbWV0cnkgaGFzIGNoYW5nZWQuIFRoZSBjbGlwIHJlY3QgaXMgaW4gcGx1Zy1pbiBj
b29yZGluYXRlcywgYW5kIHRoZSBhZmZpbmUgdHJhbnNmb3JtIGNhbiBiZSB1c2VkCiAgICAgLy8g
dG8gY29udmVydCBmcm9tIHJvb3QgdmlldyBjb29yZGluYXRlcyB0byBwbHVnLWluIGNvb3JkaW5h
dGVzLgotICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25z
dCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVzaW9ucykgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IGhpZGRlbiBvciBz
aG93bi4gKE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBjYWxsZWQgd2hlbiB0aGUgcGx1Zy1pbiBiZWNv
bWVzIG9ic2N1cmVkIGZyb20gdmlldyBvbiBzY3JlZW4uKQogICAgIHZpcnR1YWwgdm9pZCB2aXNp
YmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCA2ZmEwNTg2
Li5lMmY0MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAjaWYgUExV
R0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgLy8gQ3JlYXRlIGEgcGx1Z2luIGNvbnRhaW5lciBm
b3Igd2luZG93ZWQgcGx1Z2lucwogICAgIHZpcnR1YWwgdWludDY0X3QgY3JlYXRlUGx1Z2luQ29u
dGFpbmVyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9v
bCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSA9IDA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggM2I1
OGUyMC4uZjM3YmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCkBAIC03MSw2ICs3MSw3IEBAIFBsdWdpblByb3h5OjpQbHVnaW5Q
cm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9jZXNz
KQogICAgICwgbV9yZW1vdGVMYXllckNsaWVudElEKDApCiAgICAgLCBtX3dhaXRpbmdPbkFzeW5j
aHJvbm91c0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9pc1Jlc3RhcnRlZFByb2Nlc3Mo
aXNSZXN0YXJ0ZWRQcm9jZXNzKQorICAgICwgbV9pc1dpbmRvd2VkKGZhbHNlKQogewogfQogCkBA
IC0yNTcsNiArMjU4LDExIEBAIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBQbHVnaW5Qcm94eTo6aXNXaW5kb3dlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNXaW5kb3dlZDsKK30KKwogYm9vbCBQbHVnaW5Qcm94eTo6d2Fu
dHNXaGVlbEV2ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fd2FudHNXaGVlbEV2ZW50czsKQEAgLTI4
MywxMiArMjg5LDIyIEBAIHZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKCkKICAg
ICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YSA9IGZhbHNlOwogICAg
IH0KIAotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Db250cm9sbGVyUHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlw
UmVjdCwgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb250ZW50c1NjYWxlRmFjdG9yKCks
IHBsdWdpbkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKQorICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgb2NjbHVz
aW9ucyA9IG1fb2NjbHVzaW9uczsKKyNlbHNlCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
IG9jY2x1c2lvbnM7CisjZW5kaWYKKworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Okdlb21ldHJ5RGlkQ2hhbmdlKG1f
cGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBvY2Ns
dXNpb25zLCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdpbkJhY2tpbmdTdG9yZUhhbmRsZSks
IG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZShj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKQordm9pZCBQbHVnaW5Q
cm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmll
d1RyYW5zZm9ybSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBvY2NsdXNpb25zKQog
ewotICAgIGlmIChwbHVnaW5TaXplID09IG1fcGx1Z2luU2l6ZSAmJiBtX2NsaXBSZWN0ID09IGNs
aXBSZWN0ICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9PSBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtKSB7CisgICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVnaW5TaXplICYmIG1fY2xp
cFJlY3QgPT0gY2xpcFJlY3QKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICAgICAg
JiYgbV9vY2NsdXNpb25zID09IG9jY2x1c2lvbnMKKyNlbmRpZgorICAgICAgICAmJiBtX3BsdWdp
blRvUm9vdFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgewogICAg
ICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjk2LDYg
KzMxMiwxMSBAQCB2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRT
aXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbAogICAgIG1fcGx1Z2luU2l6ZSA9IHBs
dWdpblNpemU7CiAgICAgbV9jbGlwUmVjdCA9IGNsaXBSZWN0OwogICAgIG1fcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07CisjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCisgICAgbV9vY2NsdXNpb25zID0gb2NjbHVzaW9uczsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKG9jY2x1c2lvbnMpOworI2VuZGlmCiAKICAgICBnZW9tZXRyeURpZENo
YW5nZSgpOwogfQpAQCAtNjk5LDExICs3MjAsMTIgQEAgdm9pZCBQbHVnaW5Qcm94eTo6c2V0U3Rh
dHVzYmFyVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c2JhclRleHQpCiB2b2lkIFBsdWdpblByb3h5
OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQogewogICAgIHdpbmRv
d0lEID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250YWluZXIoKTsKKyAgICBtX2lzV2lu
ZG93ZWQgPSB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6d2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3ZvaWQgUGx1
Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCkKIHsKLSAg
ICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVSZWN0
LCBjbGlwUmVjdCwgd2luZG93SUQpOworICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCBvY2NsdXNpb25zLCB3aW5kb3dJ
RCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENo
YW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDcyZGE5N2EuLjhkMDI5
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCkBAIC04Myw4ICs4Myw5IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1MYXllciogcGx1Z2lu
TGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgd2Fu
dHNXaGVlbEV2ZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmll
d1RyYW5zZm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlw
UmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMpIG92ZXJy
aWRlOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBv
dmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wg
d2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKQEAgLTE4MCw3ICsxODEsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgdm9pZCBjcmVhdGVQbHVnaW5D
b250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKTsKLSAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpOworICAgIHZvaWQg
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
cmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKTsKICAgICB2
b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWlu
dDY0X3Qgd2luZG93SUQpOwogI2VuZGlmCiAKQEAgLTIwNSw2ICsyMDYsMTAgQEAgcHJpdmF0ZToK
ICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSByb290
IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1pbiBjb29yZGluYXRlcy4KICAgICBXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwogCisjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpCisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fb2NjbHVz
aW9uczsKKyNlbmRpZgorCiAgICAgLy8gVGhpcyBpcyB0aGUgYmFja2luZyBzdG9yZSB0aGF0IHdl
IHBhaW50IHdoZW4gd2UncmUgdG9sZCB0byBwYWludC4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBtX2JhY2tpbmdTdG9yZTsKIApAQCAtMjM0LDYgKzIzOSw4IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFByb2Nlc3M7CisKKyAgICBib29sIG1faXNXaW5k
b3dlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGJlZTg0M2QuLjNkMzhiZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KQEAgLTc1LDcgKzc1LDcgQEAg
bWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIENyZWF0ZVBsdWdp
bkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJRCkKIAogICAgICMgVXBkYXRlIGdlb21l
dHJ5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQKLSAgICBXaW5kb3dlZFBsdWdpbkdlb21ldHJ5
RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNs
aXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBS
ZWN0LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93
SUQpCiAKICAgICAjIFVwZGF0ZSB2aXNpYmlsaXR5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQK
ICAgICBXaW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVp
bnQ2NF90IHdpbmRvd0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IDY4ZWEyMzMuLjZlNDA0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDk2LDYg
KzEwOTcsMTA0IEBAIGJvb2wgUGx1Z2luVmlldzo6dHJhbnNmb3Jtc0FmZmVjdEZyYW1lUmVjdCgp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBpZnJhbWVJc0Fib3ZlUGx1Z2lu
KGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1lWkluZGV4U3RhY2ssIGNv
bnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1Z2luWkluZGV4U3RhY2spCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZnJhbWVaSW5kZXhTdGFjay5zaXplKCkgJiYgaSA8
IHBsdWdpblpJbmRleFN0YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFRoZSByb290IGlz
IGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiBXZSB3YW50IHRvIGl0ZXJhdGUgcm9vdC1kb3du
d2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20gdGhlIGVuZC4KKyAgICAgICAgY29uc3Qg
UmVuZGVyT2JqZWN0KiBpZnJhbWVTdGFja1Jvb3RPYmplY3QgPSBpZnJhbWVaSW5kZXhTdGFja1tp
ZnJhbWVaSW5kZXhTdGFjay5zaXplKCkgLSAxIC0gaV07CisgICAgICAgIGNvbnN0IFJlbmRlck9i
amVjdCogcGx1Z2luU3RhY2tSb290T2JqZWN0ID0gcGx1Z2luWkluZGV4U3RhY2tbcGx1Z2luWklu
ZGV4U3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBpZiAoaWZyYW1lU3RhY2tSb290T2Jq
ZWN0ID09IHBsdWdpblN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUgc3RhY2sgdGhhdCBhcmUgbm90IHRo
ZSBzYW1lLCB0aGVuIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBqdXN0IGJlbG93IHRoZSBsb3dlc3Qg
Y29tbWVudCBhbmNlc3Rvci4KKyAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHNob3VsZCBiZSBv
biB0b3AuCisgICAgICAgIGlmIChpZnJhbWVTdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkuekluZGV4
KCkgPiBwbHVnaW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkuekluZGV4KCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGlmcmFtZVN0YWNrUm9vdE9iamVjdC0+c3R5bGUo
KS56SW5kZXgoKSA8IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBJZiB0aGUgcGx1Z2luIGRvZXMg
bm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFja3MgYmVoaW5kIHRoZSBpZnJhbWUu
IFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBJRS4KKyAgICAgICAg
aWYgKHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS5wb3NpdGlvbigpID09IFN0YXRpY1Bv
c2l0aW9uKSB7CisgICAgICAgICAgICAvLyBUaGUgMCd0aCBlbGVtZW50cyBvZiB0aGVzZSBSZW5k
ZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2luIG5vZGUgYW5kIHRoZSBpZnJhbWUu
CisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBsdWdpblJlbmRlck9iamVjdCA9IHBs
dWdpblpJbmRleFN0YWNrWzBdOworICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJh
bWVSZW5kZXJPYmplY3QgPSBpZnJhbWVaSW5kZXhTdGFja1swXTsKKworICAgICAgICAgICAgaWYg
KHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSA+IGlmcmFtZVJlbmRlck9iamVj
dC0+c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluc3BlY3QgdGhl
IGRvY3VtZW50IG9yZGVyLiBMYXRlciBvcmRlciBtZWFucyBoaWdoZXIgc3RhY2tpbmcuCisgICAg
ICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0gaWZyYW1lU3RhY2tSb290T2JqZWN0LT5w
YXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcGx1Z2luU3RhY2tSb290T2JqZWN0LT5wYXJlbnQo
KSk7CisKKyAgICAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIGNoaWxkID0gZG93bmNhc3Q8
UmVuZGVyRWxlbWVudD4ocGFyZW50KS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKGNoaWxkID09IGlmcmFtZVN0YWNr
Um9vdE9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBp
ZiAoY2hpbGQgPT0gcGx1Z2luU3RhY2tSb290T2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBS
ZW5kZXJPYmplY3QqIGZyYW1lVmlld093bmVySUZyYW1lUmVuZGVyZXIoY29uc3QgRnJhbWVWaWV3
KiBmcmFtZVZpZXcpCit7CisgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBmcmFtZVZpZXctPmZy
YW1lKCkub3duZXJFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5yZW5k
ZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBlbGVtZW50LT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSA/IGVsZW1lbnQtPnJlbmRlcmVyKCkgOiBu
dWxscHRyOworfQorCitzdGF0aWMgdm9pZCBidWlsZFpJbmRleFN0YWNrKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgekluZGV4U3RhY2spCit7Cisg
ICAgekluZGV4U3RhY2suY2xlYXIoKTsKKyAgICB3aGlsZSAocmVuZGVyZXIpIHsKKyAgICAgICAg
ekluZGV4U3RhY2suYXBwZW5kKHJlbmRlcmVyKTsKKyAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJl
ci0+cGFyZW50KCk7CisgICAgfQorfQorCit2b2lkIFBsdWdpblZpZXc6OmdldE9jY2x1c2lvblJl
Y3RzQnlJRnJhbWVzKFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykgY29uc3QKK3sKKyAgICBp
ZiAoIXBhcmVudCgpIHx8ICFwYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pihw
YXJlbnQoKSk7CisKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gcGx1Z2luWkluZGV4
U3RhY2s7CisgICAgYnVpbGRaSW5kZXhTdGFjayhtX3BsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCks
IHBsdWdpblpJbmRleFN0YWNrKTsKKworICAgIGNvbnN0IEludFJlY3QmIHBsdWdpblJlY3QgPSBm
cmFtZVJlY3QoKTsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gaWZyYW1lWkluZGV4
U3RhY2s7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudEZyYW1lVmlldy0+Y2hp
bGRyZW4oKSkgeworICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgRnJhbWVWaWV3cyBiZWNh
dXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZpZXdzLgorICAgICAgICBpZiAoIWNoaWxkLT5p
c0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBpZnJhbWVSZW5kZXJlciA9IGZyYW1lVmlld093bmVySUZyYW1lUmVuZGVyZXIoZG93bmNh
c3Q8RnJhbWVWaWV3PihjaGlsZC5nZXQoKSkpOworICAgICAgICBpZiAoIWlmcmFtZVJlbmRlcmVy
IHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpLmludGVyc2VjdHMocGx1Z2luUmVj
dCkpIHsKKyAgICAgICAgICAgIGJ1aWxkWkluZGV4U3RhY2soaWZyYW1lUmVuZGVyZXIsIGlmcmFt
ZVpJbmRleFN0YWNrKTsKKworICAgICAgICAgICAgaWYgKGlmcmFtZUlzQWJvdmVQbHVnaW4oaWZy
YW1lWkluZGV4U3RhY2ssIHBsdWdpblpJbmRleFN0YWNrKSkgeworICAgICAgICAgICAgICAgIGNv
bnN0IFJlbmRlckJveCogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KGlmcmFtZVJlbmRl
cmVyKTsKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChy
ZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOworICAgICAgICAgICAgICAgIHBvaW50Lm1vdmUo
LXBsdWdpblJlY3QueCgpLCAtcGx1Z2luUmVjdC55KCkpOworICAgICAgICAgICAgICAgIEludFNp
emUgc2l6ZShyZW5kZXJlci0+d2lkdGgoKSwgcmVuZGVyZXItPmhlaWdodCgpKTsKKyAgICAgICAg
ICAgICAgICBvY2NsdXNpb25zLmFwcGVuZChJbnRSZWN0KHBvaW50LCBzaXplKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6dmlld0dlb21l
dHJ5RGlkQ2hhbmdlKCkKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4g
fHwgIXBhcmVudCgpKQpAQCAtMTEyNCw4ICsxMjIzLDEyIEBAIHZvaWQgUGx1Z2luVmlldzo6dmll
d0dlb21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgaWYgKCFjbGlwUmVjdC5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBjbGlwUmVjdCA9IGJvdW5kc1JlY3QoKTsKICAgICB9Ci0gICAgCi0gICAgbV9w
bHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHNpemUoKSwgY2xpcFJlY3QsIHRyYW5zZm9ybSk7CisK
KyAgICBWZWN0b3I8SW50UmVjdD4gb2NjbHVzaW9uczsKKyAgICBpZiAobV9wbHVnaW4tPmlzV2lu
ZG93ZWQoKSkKKyAgICAgICAgZ2V0T2NjbHVzaW9uUmVjdHNCeUlGcmFtZXMob2NjbHVzaW9ucyk7
CisKKyAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2Uoc2l6ZSgpLCBjbGlwUmVjdCwgdHJh
bnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3Ojp2aWV3VmlzaWJpbGl0
eURpZENoYW5nZSgpCkBAIC0xNzA1LDkgKzE4MDgsOSBAQCB1aW50NjRfdCBQbHVnaW5WaWV3Ojpj
cmVhdGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3aW5kb3dJRDsKIH0KIAotdm9pZCBQ
bHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVp
bnQ2NF90IHdpbmRvd0lEKQordm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucywg
dWludDY0X3Qgd2luZG93SUQpCiB7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlw
UmVjdCwgd2luZG93SUQpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0
LCBvY2NsdXNpb25zLCB3aW5kb3dJRCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OndpbmRvd2Vk
UGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApp
bmRleCAzMDY4ZjA1Li4xMzZhYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTIyNiw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkgb3ZlcnJpZGU7CiAjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgdWludDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2
NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0yNDAsNiArMjQwLDExIEBAIHBy
aXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZlbnQ+IGNyZWF0ZVdlYkV2ZW50KFdl
YkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKIAorICAgIC8vIFJldHVybiBhIHNldCBvZiByZWN0
YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24gYnkgdGhlIHBsdWdpbiAoImN1dG91
dHMiKS4gVGhpcyBoZWxwcyBpbXBsZW1lbnQgdGhlICJpZnJhbWUgc2hpbSIKKyAgICAvLyB0ZWNo
bmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdpbiB3aXRoIGNvbnRlbnQgZnJvbSB0
aGUgcGFnZS4gSWZyYW1lIGVsZW1lbnRzIHNob3VsZCBvY2NsdWRlIHBsdWdpbnMgd2hlbiB0aGV5
IG9jY3VyCisgICAgLy8gaGlnaGVyIGluIHRoZSBzdGFja2luZyBvcmRlci4KKyAgICB2b2lkIGdl
dE9jY2x1c2lvblJlY3RzQnlJRnJhbWVzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNvbnN0
OworCiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiBtX3BsdWdpbkVsZW1l
bnQ7CiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAgICAgV2ViUGFnZSogbV93ZWJQYWdl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274576</attachid>
            <date>2016-03-21 01:10:07 -0700</date>
            <delta_ts>2017-08-19 16:01:10 -0700</delta_ts>
            <desc>Updated patch to use Region for occlusions</desc>
            <filename>wk2-iframe-shim.diff</filename>
            <type>text/plain</type>
            <size>50552</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjQxZDExLi41ZGM4OTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMt
MTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIEltcGxlbWVudCBpZnJhbWUgc2hpbSB0ZWNobmlxdWUgZm9yIHdpbmRvd2VkIHBsdWdp
bnMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMyMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnJpbmcgYmFjayBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIGFuZCBza2lwIGl0IGlu
IGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgZXhjZXB0IEdUSysuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTE3ICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdFQjog
Vm9pY2VPdmVyIGRvZXMgbm90IGFubm91bmNlIHNvbWUgV0FJLUFSSUEgZG9jdW1lbnQgc3RydWN0
dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzU3MDAyZS4uNDM0ZWI4MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01MSw2ICs1MSw5IEBAIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVz
dC13aXRoLWNsaWVudC1wcm92aWRlZC1odHRwLWJvZHkuaHRtbCBbIFNraXAgXQogZmFzdC9oYXJu
ZXNzL3VpLXNpZGUtc2NyaXB0cy5odG1sIFsgU2tpcCBdCiBmYXN0L2hhcm5lc3MvY29uY3VycmVu
dC11aS1zaWRlLXNjcmlwdHMuaHRtbCBbIFNraXAgXQogCisjIE9ubHkgR1RLKyBzdXBwb3J0cyBp
ZnJhbWUgc2hpbXMuCitwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sIFsgU2tpcCBdCisKICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIHRl
c3RzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMTIyMmQ1Li4yOTA5MjM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcwNSwzICsyNzA1LDUg
QEAgZmFzdC9tdWx0aWNvbC9tdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVyLWZvci1pbnB1
dC5odG1sIFsgUGFzcyBdCiAKICMgVGhpcyB0ZXN0IHJlbGllcyBvbiBpT1Mtc3BlY2lmaWMgZm9u
dCBmYWxsYmFjay4KIGZhc3QvdGV4dC9hcmFiaWMtYmxhY2tsaXN0ZWQtZXhwZWN0ZWQuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCisKK3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwgWyBQ
YXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjIyYTc4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCkBAIC0wLDAgKzEsMjYzIEBACis8aHRtbD48aGVh
ZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0gW107CisgICAgdmFyIGNsaWNr
cyA9IFtdOworCisgICAgdmFyIGhlaWdodCA9IDEwMDsKKyAgICB2YXIgd2lkdGggPSAxMDA7Cisg
ICAgdmFyIGl0ZW1zID0gMDsKKworICAgIGZ1bmN0aW9uIG1ha2VQbHVnaW5FbGVtZW50KCkKKyAg
ICB7CisgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZW1iZWQnKTsKKyAg
ICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N3Zl9lbWJlZF8nICsgaXRlbXMpOworICAgICAg
ICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRy
aWJ1dGUoJ2hlaWdodCcsIGhlaWdodCArICcnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3dt
b2RlJywgJ3dpbmRvdycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnbG9vcCcsICdmYWxzZScp
OworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291cmNlcy9zaW1wbGVfYmxhbmsu
c3dmJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2FwcGxpY2F0aW9uL3gtc2hv
Y2t3YXZlLWZsYXNoJyk7CisgICAgICAgIHJldHVybiBmOworICAgIH0KKworICAgIGZ1bmN0aW9u
IG1ha2VQbHVnaW5FbGVtZW50V2l0aEhpZ2hlclpJbmRleCgpCisgICAgeworICAgICAgICB2YXIg
ZiA9IG1ha2VQbHVnaW5FbGVtZW50KCk7CisgICAgICAgIGYuc3R5bGUuekluZGV4ID0gMTAwMDsK
KyAgICAgICAgZi5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisgICAgICAgIHJldHVybiBm
OworICAgIH0KKworICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKQorICAgIHsKKyAgICAgICAg
dmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgaS5zdHls
ZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOwor
ICAgICAgICBpLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIGkuc3R5bGUud2lkdGggPSAn
ODBweCc7CisgICAgICAgIGkuc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBpLnNldEF0
dHJpYnV0ZSgnZnJhbWVib3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3Jj
JywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VJZCkKKyAgICB7DQorICAgICAg
ICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvLnN0eWxl
LnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgby5zdHlsZS50b3AgPSAnMTBweCc7Cisg
ICAgICAgIG8uc3R5bGUubGVmdCA9ICczMHB4JzsKKyAgICAgICAgby5zdHlsZS53aWR0aCA9ICc4
MHB4JzsKKyAgICAgICAgby5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlk
ZGVuJzsKKyAgICAgICAgby5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1
dHRvbicgKyBjYXNlSWQgKyAnIiAnICsKKyAgICAgICAgICAgICdvbmNsaWNrPSJkb0NsaWNrKCcg
KyBjYXNlSWQgKworICAgICAgICAgICAgJyk7IiB2YWx1ZT0iY2xpY2ttZSIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7Ii8+JzsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGFw
cGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwgb3Zlcmxh
eUluc2lkZURpdiwgZXhwZWN0Q2xpY2thYmxlLCBjYXNlSWQpCisgICAgeworICAgICAgICB2YXIg
aWQgPSBtYWtlSWZyYW1lRGl2KCk7CisgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoY2FzZUlkKTsKKyAgICAgICAgaWYgKG92ZXJsYXlEaXZaSWZyYW1lKQorICAgICAg
ICAgICAgaWQuc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpJZnJhbWU7CisKKyAgICAgICAgdmFy
IG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBj
YXNlSWQpOworICAgICAgICBvZC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAg
IGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICBvZC5zdHlsZS56SW5kZXggPSBv
dmVybGF5RGl2Wk92ZXJsYXk7CisKKyAgICAgICAgaWYgKG92ZXJsYXlJbnNpZGVEaXYpIHsKKyAg
ICAgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpCisgICAgICAgICAgICAgICAgcGFy
ZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3ZlcmxheTsKKworICAgICAgICAgICAg
cGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgICAgIHBhcmVu
dGRpdi5zdHlsZS50b3AgPSAnMHB4JzsKKyAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0
ID0gJzBweCc7CisgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQoaWQpOworICAgICAg
ICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgIHJvb3QuYXBwZW5k
Q2hpbGQocGFyZW50ZGl2KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoaWQpOworICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gYWRkQ2FzZSh4LCB5LCB0YWdzKQorICAgIHsKKyAg
ICAgICAgdmFyIGNhc2VJZCA9IGl0ZW1zOworICAgICAgICBpdGVtcysrOworCisgICAgICAgIHZh
ciBleHBlY3RDbGlja2FibGUgPSB0YWdzLmV4cGVjdCAmJiB0YWdzLmV4cGVjdC5pbmRleE9mKCdV
TkRFUicpID09IC0xOworICAgICAgICBleHBlY3RlZENsaWNrc1tjYXNlSWRdID0gZXhwZWN0Q2xp
Y2thYmxlOw0KKw0KKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKTsKKyAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgcm9vdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7Cisg
ICAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHggKiAod2lkdGggKyA0MCkgKyAncHgnOworICAgICAg
ICByb290LnN0eWxlLnRvcCA9IHkgKiAoaGVpZ2h0ICsgMjApICsgJ3B4JzsKKyAgICAgICAgcm9v
dC5pZCA9IGNhc2VJZDsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgICAgIHZhciBwbHVnaW5EaXZaOworICAgICAgICB2YXIgb3ZlcmxheURpdlpJZnJhbWU7Cisg
ICAgICAgIHZhciBvdmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgIGlmICh0YWdzLnBsdWdpbkxv
d2VyeikgeworICAgICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJs
YXlEaXZaSWZyYW1lID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMjAx
OworICAgICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2luSGlnaGVyeikgeworICAgICAgICAgICAg
cGx1Z2luRGl2WiA9IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOwor
ICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMTAxOworICAgICAgICB9IGVsc2UgaWYg
KHRhZ3MucGx1Z2luRXF1YWx6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAg
ICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2
Wk92ZXJsYXkgPSAxMDA7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgew0KKyAgICAgICAgICAgIC8vIEZvciB0aGlzIHRlc3QgY2FzZSB3ZSBzZXQg
dGhlIHotaW5kZXggZm9yIHRoZSBpZnJhbWUgYW5kIHRoZSBvdmVybGF5CisgICAgICAgICAgICAv
LyB0byBiZSBsb3dlciB0aGFuIHRoZSBwbHVnaW4uCisgICAgICAgICAgICBvdmVybGF5RGl2Wklm
cmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDA7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgYXBwZW5kUGx1Z2luID0gZnVuY3Rpb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcGQ7CisgICAgICAgICAgICBpZiAodGFncy5wbHVnaW5FeHBsaWNpdEhp
Z2hlclpJbmRleCkgeworICAgICAgICAgICAgICAgIHBkID0gbWFrZVBsdWdpbkVsZW1lbnRXaXRo
SGlnaGVyWkluZGV4KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBk
ID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBp
ZiAodGFncy5wbHVnaW5JbnNpZGVEaXYgfHwgcGx1Z2luRGl2WikgeworICAgICAgICAgICAgICAg
IHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
ICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQocGQpCisgICAgICAgICAgICAgICAgaWYgKCF0
YWdzLnBsdWdpbk5vcmVsYXRpdmUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHls
ZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGl2
WikKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IHBsdWdpbkRp
dlo7CisKKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBhcmVudGRpdik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0
aXZlKQorICAgICAgICAgICAgICAgICAgICBwZC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7
CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxpZXIpIHsKKyAgICAgICAg
ICAgIGFwcGVuZE92ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwg
dGFncy5vdmVybGF5SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCk7CisgICAgICAg
ICAgICBhcHBlbmRQbHVnaW4oKTsKKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBhcHBl
bmRQbHVnaW4oKTsKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlPblRpbWVvdXQpIHsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KCdhcHBlbmRPdmVybGF5KCcrb3ZlcmxheURpdlpJZnJh
bWUrJywgJytvdmVybGF5RGl2Wk92ZXJsYXkgKycsICcgKyB0YWdzLm92ZXJsYXlJbnNpZGVEaXYg
KyAnLCAnICsgZXhwZWN0Q2xpY2thYmxlICsgJywgJyArIGNhc2VJZCArICcpJywgMCk7CisgICAg
ICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBhcHBlbmRPdmVybGF5KG92ZXJsYXlE
aXZaSWZyYW1lLCBvdmVybGF5RGl2Wk92ZXJsYXksIHRhZ3Mub3ZlcmxheUluc2lkZURpdiwgZXhw
ZWN0Q2xpY2thYmxlLCBjYXNlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgIH0K
KworICAgIGZ1bmN0aW9uIGRvQ2xpY2soaWQpCisgICAgew0KKyAgICAgICAgY2xpY2tzW2lkXSA9
IHRydWU7CisKKyAgICAgICAgLy8gQ2hlY2sgc3VjY2Vzcy9mYWlsdXJlLgorICAgICAgICB2YXIg
b3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOworICAgICAgICB2YXIg
d2FpdGluZ0Zvck1vcmVDbGlja3MgPSBmYWxzZTsKKyAgICAgICAgdmFyIGs7CisgICAgICAgIGZv
ciAoayBpbiBleHBlY3RlZENsaWNrcykgeworICAgICAgICAgICAgaWYgKGV4cGVjdGVkQ2xpY2tz
W2tdICYmICFjbGlja3Nba10pCisgICAgICAgICAgICAgICAgd2FpdGluZ0Zvck1vcmVDbGlja3Mg
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIWV4cGVjdGVkQ2xpY2tzW2tdICYmIGNsaWNr
c1trXSkgeworICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9DQorDQorICAg
ICAgICBpZiAoIXdhaXRpbmdGb3JNb3JlQ2xpY2tzKSB7CisgICAgICAgICAgICBvdXRwdXQuaW5u
ZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgYWRkQ2FzZSgwLCAwLCB7ZXhwZWN0
OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMCwgeydvdmVybGF5RWFybGll
cic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOiAxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6
J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5Mb3dlcnon
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDAsIHsncGx1
Z2luSGlnaGVyeic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNl
KDAsIDEsIHsnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Cisg
ICAgICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5Mb3dlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2
JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAxLCB7J3Bs
dWdpbkhpZ2hlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5E
RVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMiwgeydwbHVnaW5FcXVhbHonOjEsICdvdmVybGF5
SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAyLCB7J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsICdvdmVybGF5RWFy
bGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDIs
IHsnb3ZlcmxheUVhcmxpZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAg
YWRkQ2FzZSgzLCAyLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwg
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMywgeydwbHVnaW5O
b3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgx
LCAzLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbklu
c2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwg
MywgeydwbHVnaW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292
ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgzLCAzLCB7J3BsdWdpbkxvd2Vyeic6MSwg
J292ZXJsYXlPblRpbWVvdXQnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBh
ZGRDYXNlKDQsIDAsIHsncGx1Z2luRXhwbGljaXRIaWdoZXJaSW5kZXgnOiAxLCAncGx1Z2luTm9y
ZWxhdGl2ZSc6IDEsICdwbHVnaW5JbnNpZGVEaXYnOiAxLCAnb3ZlcmxheUluc2lkZURpdic6IDEs
IGV4cGVjdDogJ292ZXJsYXkgVU5ERVInIH0pOworICAgICAgICBydW5UZXN0KCk7CisgICAgfQor
CisgICAgLy8gQXV0b21hdGlvbjogdHJ5IHRvIGNsaWNrIG9uIGVhY2ggYnV0dG9uLgorICAgIHZh
ciBuZXh0SWRUb0NsaWNrID0gMDsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZU92ZXIoZWxlbU5hbWUpIHsK
KyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtTmFtZSk7Cisg
ICAgICAgIHZhciB4ID0gZWxlbS5vZmZzZXRMZWZ0ICsgZWxlbS5zY3JvbGxXaWR0aCAvIDI7Cisg
ICAgICAgIHZhciB5ID0gZWxlbS5vZmZzZXRUb3AgKyBlbGVtLnNjcm9sbEhlaWdodCAvIDI7Cisg
ICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudDsKKyAgICAgICAgd2hp
bGUgKG9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgeCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgIH0K
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZG9OZXh0Q2xpY2soKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgaWYgKG5leHRJZFRvQ2xpY2sgPCBleHBlY3RlZENsaWNrcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBuZXh0SWRUb0NsaWNrKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgbmV4dElkVG9DbGljaysr
OworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0K
KyAgICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCisg
ICAgPHA+VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwg
YWJvdmUgYQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBo
aWRkZW4gYnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFy
ZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3Rp
dmVseSwgY2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBzcXVhcmVzLiBZb3Ugc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycKKyAgICBidXR0b25zLjwv
cD4KKworICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZh
aWx1cmUuPC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
b250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rpdj4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkMmRhYjMuLjU1NWUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0wMy0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGlmcmFtZSBzaGltIHRlY2huaXF1
ZSBmb3Igd2luZG93ZWQgcGx1Z2lucyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBhbGxvd3MgdG8gc2hvdyBpZnJhbWVzIG9uIHRv
cCBvZiBhIHdpbmRvd2VkIHBsdWdpbi4gVGhlCisgICAgICAgIGltcGxlbWVudGF0b24gaXMgYmFz
ZWQgb24gY2hyb21pdW0gb25lLCBpdCBjaGVja3MgdGhlIGFyZWFzIG9mIHRoZQorICAgICAgICB3
aW5kb3dlZCBwbHVnaW5zIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5IGFuIGlmcmFtZS4gVGhlIG9jY2x1
c2lvbgorICAgICAgICByZWN0YW5nbGVzIGFyZSBzZW50IHRvIHRoZSBVSSBwcm9jZXNzIHRvIHBy
b3Blcmx5IG1hc2sgdGhlIHBsdWdpbgorICAgICAgICBjb250YWluZXIgd2luZG93LgorICAgICAg
ICBUaGlzIGlzIGNvdmVyZWQgYnkgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbC4KKworICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IEFkZCBvY2Ns
dXNpb25zIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDogRGl0dG8uCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFN1YnN0cmFjdAorICAgICAg
ICB0aGUgb2NjbHVzaW9uIHJlY3RhbmdsZXMgZnJvbSB0aGUgcGx1Z2luIGNvbnRhaW5lciB3aW5k
b3cgY2xpcCByZWdpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzV2lu
ZG93ZWQpOiBSZXR1cm4gd2hldGhlciB0aGUgcGx1Z2luIGlzCisgICAgICAgIHdpbmRvd2VkIG9y
IG5vdC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdl
KTogU2F2ZSB0aGUgcGFzc2VkIGluIG9jY2x1c2lvbnMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKTogUGFzcyBhbHNv
IHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBjb250cm9sbGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6IEFkZCBpc1dpbmRvd2VkKCkgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRkIGlzV2luZG93ZWQoKSBtZXRob2Qg
YW5kCisgICAgICAgIG9jY2x1c2lvbnMgcGFyYW1ldGVyIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCku
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDogQWRkIG9j
Y2x1c2lvbnMgcGFyYW1ldGVyCisgICAgICAgIHRvIGdlb21ldHJ5RGlkQ2hhbmdlKCkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KTogSW5pdGlhbGl6ZSBtX2lzV2luZG93ZWQgdG8g
ZmFsc2UuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc1dpbmRvd2VkKTogUmV0dXJu
IHdoZXRoZXIgdGhlIHBsdWdpbiBpcworICAgICAgICB3aW5kb3dlZCBvciBub3QuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6IFNhdmUgdGhlIHBhc3Nl
ZCBpbiBvY2NsdXNpb25zLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKTogU2V0IG1faXNXaW5kb3dlZCB0bworICAgICAgICB0cnVlIGlmIGEgcGx1
Z2luIGNvbnRhaW5lciBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IFBhc3MgdGhlCisgICAgICAg
IG9jY2x1c2lvbnMgdG8gdGhlIGNvbnRyb2xsZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGQgb2NjbHVzaW9ucworICAgICAgICBwYXJhbWV0ZXIgdG8gV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aWZyYW1lSXNBYm92
ZVBsdWdpbik6IEhlbHBlciBzdGF0aWMgZnVuY3Rpb24gdG8gY2hlY2sgaWYKKyAgICAgICAgdGhl
IGlmcmFtZSBpcyBhYm92ZSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpmcmFtZVZpZXdP
d25lcklGcmFtZVJlbmRlcmVyKTogUmV0dXJuIHRoZSBvd25lciBlbGVtZW50CisgICAgICAgIHJl
bmRlcmVyIG9mIHRoZSBnaXZlbiBGcmFtZVZpZXcgaWYgaXQncyBhbiBpZnJhbWUuCisgICAgICAg
IChXZWJLaXQ6OmJ1aWxkWkluZGV4U3RhY2spOiBIZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgdGhl
IHJlbmRlcgorICAgICAgICBzdGFjayBvZiBhIGdpdmVuIHJlbmRlcmVyLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcyk6IFJldHVybnMgdGhl
IHNldAorICAgICAgICBvZiBhcmVhcyBvZiB0aGUgcGx1Z2luIHRoYXQgYXJlIG9jY2x1ZGVkIGJ5
IGFuIGlmcmFtZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlk
Q2hhbmdlKTogQ2FsbAorICAgICAgICBnZXRPY2NsdXNpb25SZWN0c0J5SUZyYW1lcygpIGZvciB3
aW5kb3dlZCBwbHVnaW5zIGFuZCBwYXNzIHRoZQorICAgICAgICBvY2NsdXNpb25zIHRvIHRoZSBw
bHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UpOiBBZGQKKyAgICAgICAgb2NjbHVzaW9ucyBwYXJhbWV0ZXIuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwogMjAxNi0wMy0xOCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBDYWNoZXMgaW4gU2Fm
YXJpJ3MgRGV2ZWxvcCBtZW51IGRvZXMgbm90IGRpc2FibGUgY2FjaGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGRjNmQzNDMuLjAyZmU1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9wbHVnaW4tPmZyYW1lRGlkRmFpbChyZXF1ZXN0
SUQsIHdhc0NhbmNlbGxlZCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
LCBmbG9hdCBjb250ZW50c1NjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgYmFja2luZ1N0b3JlSGFuZGxlKQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Omdlb21l
dHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgb2NjbHVzaW9ucywgZmxvYXQgY29udGVudHNTY2FsZUZh
Y3RvciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSkK
IHsKICAgICBBU1NFUlQobV9wbHVnaW4pOwogCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIH0KIAotICAgIG1fcGx1Z2luLT5nZW9t
ZXRyeURpZENoYW5nZShwbHVnaW5TaXplLCBjbGlwUmVjdCwgcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSk7CisgICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHBsdWdpblNpemUsIGNsaXBS
ZWN0LCBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUp
CkBAIC02NTQsOSArNjU0LDkgQEAgdWludDY0X3QgUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVh
dGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3Qg
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2lu
ZG93SUQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0LCBjb25zdCBXZWJDb3JlOjpSZWdpb24mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lE
KQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Qcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBS
ZWN0LCB3aW5kb3dJRCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIG9jY2x1c2lvbnMsIHdpbmRvd0lE
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0
X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCA3MmNmZDg5Li5hNjU3NWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAg
LTExNiwxNCArMTE2LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9t
RGVzdHJ1Y3Rpb24oKSBvdmVycmlkZTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAg
ICB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpSZWdpb24mIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdp
bmRvd0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENo
YW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpIG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGZyYW1lRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2
NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwotICAgIHZvaWQgZ2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2lu
VG9Sb290Vmlld1RyYW5zZm9ybSwgZmxvYXQgY29udGVudHNTY2FsZUZhY3RvciwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSk7CisgICAgdm9pZCBnZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBXZWJDb3JlOjpSZWdpb24mIG9jY2x1
c2lvbnMsIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5n
ZShib29sIGlzVmlzaWJsZSk7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAgICAgdm9pZCBzdHJlYW1XaWxs
U2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVxdWVzdFVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiByZWRpcmVjdFJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBy
ZWRpcmVjdFJlc3BvbnNlU3RhdHVzQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDE4ZThjODAuLjlhOTZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
NCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRyb2xsZXJQcm94eSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgIyBTZW50IHdoZW4gdGhlIHBsdWctaW4gZ2VvbWV0cnkgY2hhbmdlcy4K
LSAgICBHZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRTaXplIHBsdWdpblNpemUsIFdlYkNv
cmU6OkludFJlY3QgY2xpcFJlY3QsIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSBwbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtLCBmbG9hdCBzY2FsZUZhY3RvciwgV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBiYWNraW5nU3RvcmVIYW5kbGUpCisgICAgR2VvbWV0cnlEaWRDaGFuZ2UoV2Vi
Q29yZTo6SW50U2l6ZSBwbHVnaW5TaXplLCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgV2ViQ29yZTo6
UmVnaW9uIG9jY2x1c2lvbnMsIGZsb2F0IHNjYWxlRmFjdG9yLCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhhbmRsZSkKIAogICAgICMgU2VudCB3aGVuIHRoZSBw
bHVnLWluIHZpc2liaWxpdHkgY2hhbmdlcy4KICAgICBWaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wg
aXNWaXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY4
ZDdlZTUuLmEzODA2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTE0MzgsNyArMTQzOCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJF
KFgxMSkKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQp
OwotICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1
aW50NjRfdCB3aW5kb3dJRCk7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgb2NjbHVzaW9ucywgdWludDY0
X3Qgd2luZG93SUQpOwogICAgIHZvaWQgd2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdl
KGJvb2wgaXNWaXNpYmxlLCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjU5
ZDQwOC4uZTczMzNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNTEsNyArMzUxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKICAgICAjIFgxMSB3aW5kb3dl
ZCBwbHVnaW4gbWVzc2FnZXMKICAgICBDcmVhdGVQbHVnaW5Db250YWluZXIoKSAtPiAodWludDY0
X3Qgd2luZG93SUQpCi0gICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3Jl
OjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qg
d2luZG93SUQpCisgICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJ
bnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgV2ViQ29yZTo6UmVn
aW9uIG9jY2x1c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKQogICAgIFdpbmRvd2VkUGx1Z2luVmlz
aWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJv
eHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwu
Y3BwCmluZGV4IDgxMjgyMmYuLjFmNjYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCB1aW50NjRfdCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVnaW9uJiwgdWludDY0X3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcAppbmRleCAyZGJhZTA1Li42NzYyMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpCiAg
ICAgcGx1Z2luV2luZG93TWFwKCkuc2V0KHdpbmRvd0lELCBzb2NrZXQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1
aW50NjRfdCB3aW5kb3dJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21l
dHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgb2NjbHVzaW9u
cywgdWludDY0X3Qgd2luZG93SUQpCiB7CiAgICAgR3RrV2lkZ2V0KiBwbHVnaW4gPSBwbHVnaW5X
aW5kb3dNYXAoKS5nZXQod2luZG93SUQpOwogICAgIGlmICghcGx1Z2luKQpAQCAtMTE2LDYgKzEx
NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZQogICAgIGlmIChndGtfd2lkZ2V0X2dldF9y
ZWFsaXplZChwbHVnaW4pKSB7CiAgICAgICAgIEdka1JlY3RhbmdsZSBjbGlwID0gY2xpcFJlY3Q7
CiAgICAgICAgIGNhaXJvX3JlZ2lvbl90KiBjbGlwUmVnaW9uID0gY2Fpcm9fcmVnaW9uX2NyZWF0
ZV9yZWN0YW5nbGUoJmNsaXApOworICAgICAgICBhdXRvIHJlY3RzID0gb2NjbHVzaW9ucy5yZWN0
cygpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0cykgeworICAgICAgICAg
ICAgR2RrUmVjdGFuZ2xlIG9jY2x1c2lvbiA9IHJlY3Q7CisgICAgICAgICAgICBjYWlyb19yZWdp
b25fc3VidHJhY3RfcmVjdGFuZ2xlKGNsaXBSZWdpb24sICZvY2NsdXNpb24pOworICAgICAgICB9
CiAgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29tYmluZV9yZWdpb24oZ3RrX3dpZGdldF9nZXRf
d2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAsIDApOwogICAgICAgICBjYWlyb19yZWdpb25f
ZGVzdHJveShjbGlwUmVnaW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRl
eCBiOWIyOTZjLi5kYzBiOTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc3Nywx
MSArNzc3LDE1IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzV2hlZWxFdmVudHMoKQogICAg
IHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVp
cmtzOjpXYW50c1doZWVsRXZlbnRzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6Z2VvbWV0
cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkK
K3ZvaWQgTmV0c2NhcGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBs
dWdpblNpemUsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgb2NjbHVz
aW9ucykKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogCi0gICAgaWYgKHBsdWdpblNpemUg
PT0gbV9wbHVnaW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QgJiYgbV9wbHVnaW5Ub1Jv
b3RWaWV3VHJhbnNmb3JtID09IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIHsKKyAgICBpZiAo
cGx1Z2luU2l6ZSA9PSBtX3BsdWdpblNpemUgJiYgbV9jbGlwUmVjdCA9PSBjbGlwUmVjdAorI2lm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgICAgICAmJiBtX29jY2x1c2lvbnMgPT0gb2Nj
bHVzaW9ucworI2VuZGlmCisgICAgICAgICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9
PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7CiAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8u
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03OTcsOCArODAxLDExIEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNv
bnN0IEludFJlY3QmCiAgICAgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9S
b290Vmlld1RyYW5zZm9ybTsKIAogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIG1f
b2NjbHVzaW9ucyA9IG9jY2x1c2lvbnM7CiAgICAgSW50UG9pbnQgZnJhbWVSZWN0TG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50
KEludFBvaW50KCkpOwogICAgIG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcyA9IEludFJl
Y3QoZnJhbWVSZWN0TG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzLCBtX3BsdWdpblNpemUpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob2NjbHVzaW9ucyk7CiAjZW5kaWYKIAogICAgIHBsYXRm
b3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmY1Njlm
ZS4uMGE0MDhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg5LDYgKzkwLDcg
QEAgcHVibGljOgogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlczsgfQorICAgIGNvbnN0IFdlYkNvcmU6
OlJlZ2lvbiYgb2NjbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb2NjbHVzaW9uczsgfQogI2Vu
ZGlmCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2NsaXBSZWN0OyB9CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGx1Z2luU2l6ZTsgfQpAQCAtMTA3LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGV2YWx1YXRlKE5QT2JqZWN0KiwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywgTlBW
YXJpYW50KiByZXN1bHQpOwogICAgIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAg
ICAgYm9vbCBpc011dGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1dpbmRvd2VkOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pc1dpbmRvd2VkOyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7
IHJldHVybiBtX2lzVmlzaWJsZTsgfQogCiAgICAgc3RhdGljIHZvaWQgc2V0U2V0RXhjZXB0aW9u
RnVuY3Rpb24odm9pZCAoKikoY29uc3QgU3RyaW5nJikpOwpAQCAtMTk3LDcgKzE5OSw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZTsKICAgICBi
b29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRv
Um9vdFZpZXdUcmFuc2Zvcm0pIG92ZXJyaWRlOworICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybSwgY29uc3QgV2ViQ29yZTo6UmVnaW9uJiBvY2NsdXNpb25zKSBvdmVycmlk
ZTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUpIG92ZXJyaWRl
OwogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCkgb3ZlcnJpZGU7CkBAIC0yOTksNiArMzAxLDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwogCiAj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgV2ViQ29yZTo6UmVnaW9uIG1fb2NjbHVz
aW9uczsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRl
czsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4
IDg2ZGU4YmUuLjM3N2I3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEu
Y3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6Z2VvbWV0cnlE
aWRDaGFuZ2UoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgd2luZG93SUQgPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oR0RLX1dJTkRPV19YSUQoZ3RrX3BsdWdfZ2V0X3NvY2tldF93aW5kb3co
R1RLX1BMVUcobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkpKSk7CiAjZW5kaWYKLSAgICAgICAgbV9w
bHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1
Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJlY3QoKSwg
d2luZG93SUQpOworICAgICAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygp
LCBtX3BsdWdpbi5jbGlwUmVjdCgpLCBtX3BsdWdpbi5vY2NsdXNpb25zKCksIHdpbmRvd0lEKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW5YMTE6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHdpbmRvd0lEID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9zb2NrZXRfd2luZG93
KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlmCiAgICAgbV9wbHVn
aW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UobV9wbHVn
aW4uaXNWaXNpYmxlKCksIHdpbmRvd0lEKTsKLSAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dD
b29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7CisgICAgbV9wbHVn
aW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2lu
LmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJlY3QoKSwgbV9w
bHVnaW4ub2NjbHVzaW9ucygpLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Y
MTE6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9E
ZXByZWNhdGVkUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL0RlcHJlY2F0ZWRQREZQbHVnaW4uaAppbmRleCA1MzFjMGFkLi5hNDZlNjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQ
bHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJl
Y2F0ZWRQREZQbHVnaW4uaApAQCAtMTIzLDggKzEyMyw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUxheWVy
KiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dpbmRvd2VkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVj
dCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBj
b25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgb29jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlz
aWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZyYW1lRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1
Z2luLm1tCmluZGV4IGQ0ZDllODQuLjRhMzBkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0K
QEAgLTEyMjMsNyArMTIyMyw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigp
IGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJ
bnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIAotdm9pZCBQREZQbHVnaW46
Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pCit2
b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6
ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmll
d1RyYW5zZm9ybSwgY29uc3QgUmVnaW9uJikKIHsKICAgICBpZiAoc2l6ZSgpID09IHBsdWdpblNp
emUgJiYgcGx1Z2luVmlldygpLT5wYWdlU2NhbGVGYWN0b3IoKSA9PSBbbV9wZGZMYXllckNvbnRy
b2xsZXIgY29udGVudFNjYWxlRmFjdG9yXSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggYzI2Mzll
OC4uZjZlOTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCkBAIC0xNDIsOCArMTQyLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogICAgIFBsYXRmb3JtTGF5ZXIq
IHBsdWdpbkxheWVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgaXNU
cmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dpbmRv
d2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHdhbnRzV2hl
ZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgZ2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1
Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLCBjb25zdCBXZWJDb3JlOjpSZWdpb24mIG9jY2x1c2lvbnMpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBhZjE5ZjMxLi5hZDdmODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTI5LDcgKzkyOSw3IEBA
IEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgcmV0dXJuIGZy
YW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMpKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pCit2b2lkIFBERlBsdWdpbjo6Z2VvbWV0
cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgUmVn
aW9uJikKIHsKICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RW
aWV3VHJhbnNmb3JtOwogICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRv
Um9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDZlMGNiOWMu
LjFjODFkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
QEAgLTUzLDE1ICs1MywxNiBAQCBuYW1lc3BhY2UgSVBDIHsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLSAgICBjbGFzcyBGbG9hdFBvaW50Owot
ICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLSAgICBjbGFzcyBJbnRQb2ludDsKLSAgICBjbGFz
cyBJbnRSZWN0OwotICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgRmxvYXRQb2ludDsKLSAg
ICBjbGFzcyBTY3JvbGxiYXI7Ci0gICAgY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2Ns
YXNzIEludFBvaW50OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIEludFNpemU7CitjbGFzcyBGbG9h
dFBvaW50OworY2xhc3MgU2Nyb2xsYmFyOworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgUmVn
aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE0NCwxMiArMTQ1LDE1IEBAIHB1Ymxp
YzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWctaW4gaXMgdHJhbnNwYXJlbnQgb3Ig
bm90LgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkgPSAwOwogCisgICAgLy8gUmV0
dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIGlzIHdpbmRvd2VkIG9yIG5vdC4KKyAgICB2aXJ0dWFs
IGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0ID0gMDsKKwogICAgIC8vIFJldHVybnMgd2hldGhlciB3
ZSBzaG91bGQgc2VuZCB3aGVlbCBldmVudHMgdG8gdGhpcyBwbHVnLWluLgogICAgIHZpcnR1YWwg
Ym9vbCB3YW50c1doZWVsRXZlbnRzKCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4g
dGhhdCBpdHMgZ2VvbWV0cnkgaGFzIGNoYW5nZWQuIFRoZSBjbGlwIHJlY3QgaXMgaW4gcGx1Zy1p
biBjb29yZGluYXRlcywgYW5kIHRoZSBhZmZpbmUgdHJhbnNmb3JtIGNhbiBiZSB1c2VkCiAgICAg
Ly8gdG8gY29udmVydCBmcm9tIHJvb3QgdmlldyBjb29yZGluYXRlcyB0byBwbHVnLWluIGNvb3Jk
aW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwg
Y29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBj
b25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgb2NjbHVzaW9ucykgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IGhpZGRlbiBvciBzaG93bi4g
KE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBjYWxsZWQgd2hlbiB0aGUgcGx1Zy1pbiBiZWNvbWVzIG9i
c2N1cmVkIGZyb20gdmlldyBvbiBzY3JlZW4uKQogICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5
RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCA2ZmEwNTg2Li45MTNk
MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCiAgICAgLy8gQ3JlYXRlIGEgcGx1Z2luIGNvbnRhaW5lciBmb3Igd2lu
ZG93ZWQgcGx1Z2lucwogICAgIHZpcnR1YWwgdWludDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVy
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdl
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6
UmVnaW9uJiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVp
bnQ2NF90IHdpbmRvd0lEKSA9IDA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggM2I1OGUyMC4uYzdmOWQwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCkBAIC03MSw2ICs3MSw3IEBAIFBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSh1aW50NjRfdCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQogICAgICwgbV9yZW1v
dGVMYXllckNsaWVudElEKDApCiAgICAgLCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxp
emF0aW9uKGZhbHNlKQogICAgICwgbV9pc1Jlc3RhcnRlZFByb2Nlc3MoaXNSZXN0YXJ0ZWRQcm9j
ZXNzKQorICAgICwgbV9pc1dpbmRvd2VkKGZhbHNlKQogewogfQogCkBAIC0yNTcsNiArMjU4LDEx
IEBAIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorYm9vbCBQbHVnaW5Qcm94eTo6aXNXaW5kb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faXNXaW5kb3dlZDsKK30KKwogYm9vbCBQbHVnaW5Qcm94eTo6d2FudHNXaGVlbEV2ZW50cygp
CiB7CiAgICAgcmV0dXJuIG1fd2FudHNXaGVlbEV2ZW50czsKQEAgLTI4MywxMiArMjg5LDIyIEBA
IHZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgbV9wbHVnaW5C
YWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YSA9IGZhbHNlOwogICAgIH0KIAotICAgIG1fY29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJv
eHk6Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBsdWdpbkJhY2tpbmdT
dG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQor
ICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgb2NjbHVzaW9ucyA9IG1fb2NjbHVzaW9uczsKKyNl
bHNlCisgICAgV2ViQ29yZTo6UmVnaW9uIG9jY2x1c2lvbnM7CisjZW5kaWYKKworICAgIG1fY29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJv
eHk6Okdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luU2l6ZSwgbV9jbGlwUmVjdCwgbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLCBvY2NsdXNpb25zLCBjb250ZW50c1NjYWxlRmFjdG9yKCksIHBs
dWdpbkJhY2tpbmdTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJRCwgSVBDOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblBy
b3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtKQordm9pZCBQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50
U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSwgY29uc3QgV2ViQ29yZTo6UmVnaW9u
JiBvY2NsdXNpb25zKQogewotICAgIGlmIChwbHVnaW5TaXplID09IG1fcGx1Z2luU2l6ZSAmJiBt
X2NsaXBSZWN0ID09IGNsaXBSZWN0ICYmIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9PSBw
bHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSB7CisgICAgaWYgKHBsdWdpblNpemUgPT0gbV9wbHVn
aW5TaXplICYmIG1fY2xpcFJlY3QgPT0gY2xpcFJlY3QKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJF
KFgxMSkKKyAgICAgICAgJiYgbV9vY2NsdXNpb25zID09IG9jY2x1c2lvbnMKKyNlbmRpZgorICAg
ICAgICAmJiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPT0gcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSkgewogICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjk2LDYgKzMxMiwxMSBAQCB2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURpZENo
YW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiBjbAogICAgIG1f
cGx1Z2luU2l6ZSA9IHBsdWdpblNpemU7CiAgICAgbV9jbGlwUmVjdCA9IGNsaXBSZWN0OwogICAg
IG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07
CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgbV9vY2NsdXNpb25zID0gb2NjbHVz
aW9uczsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG9jY2x1c2lvbnMpOworI2VuZGlmCiAKICAg
ICBnZW9tZXRyeURpZENoYW5nZSgpOwogfQpAQCAtNjk5LDExICs3MjAsMTIgQEAgdm9pZCBQbHVn
aW5Qcm94eTo6c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c2JhclRleHQpCiB2
b2lkIFBsdWdpblByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lE
KQogewogICAgIHdpbmRvd0lEID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250YWluZXIo
KTsKKyAgICBtX2lzV2luZG93ZWQgPSB3aW5kb3dJRDsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
cmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5k
b3dJRCkKK3ZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjbGlwUmVjdCwgY29uc3QgV2ViQ29yZTo6UmVnaW9uJiBvY2NsdXNpb25zLCB1aW50NjRfdCB3
aW5kb3dJRCkKIHsKLSAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpOworICAgIGNvbnRyb2xsZXIoKS0+
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCBvY2Ns
dXNpb25zLCB3aW5kb3dJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2lu
VmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4
IDcyZGE5N2EuLjdkOGNkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9B
ZmZpbmVUcmFuc2Zvcm0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCkBA
IC04Myw4ICs4NCw5IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIo
KSBvdmVycmlkZTsKICNlbmRpZgogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgd2FudHNXaGVl
bEV2ZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwg
Y29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
LCBjb25zdCBXZWJDb3JlOjpSZWdpb24mIG9jY2x1c2lvbnMpIG92ZXJyaWRlOwogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBm
cmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2
b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBv
dmVycmlkZTsKQEAgLTE4MCw3ICsxODIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgdm9pZCBjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0
X3QmIHdpbmRvd0lEKTsKLSAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpSZWdpb24mIG9jY2x1
c2lvbnMsIHVpbnQ2NF90IHdpbmRvd0lEKTsKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJp
bGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpOwogI2VuZGlm
CiAKQEAgLTIwNSw2ICsyMDcsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBBIHRyYW5zZm9ybSB0aGF0
IGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1
Zy1pbiBjb29yZGluYXRlcy4KICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAg
V2ViQ29yZTo6UmVnaW9uIG1fb2NjbHVzaW9uczsKKyNlbmRpZgorCiAgICAgLy8gVGhpcyBpcyB0
aGUgYmFja2luZyBzdG9yZSB0aGF0IHdlIHBhaW50IHdoZW4gd2UncmUgdG9sZCB0byBwYWludC4K
ICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JhY2tpbmdTdG9yZTsKIApAQCAtMjM0LDYg
KzI0MCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFByb2Nl
c3M7CisKKyAgICBib29sIG1faXNXaW5kb3dlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlZTg0M2QuLjUyYzUxYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTc1LDcgKzc1LDcgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIENyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJ
RCkKIAogICAgICMgVXBkYXRlIGdlb21ldHJ5IG9mIHdpbmRvd2VkIHBsdWdpbiB3aWRnZXQKLSAg
ICBXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVS
ZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBX
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0
LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCBXZWJDb3JlOjpSZWdpb24gb2NjbHVzaW9ucywg
dWludDY0X3Qgd2luZG93SUQpCiAKICAgICAjIFVwZGF0ZSB2aXNpYmlsaXR5IG9mIHdpbmRvd2Vk
IHBsdWdpbiB3aWRnZXQKICAgICBXaW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9v
bCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDY4ZWEyMzMuLjYxZDQ5YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMDk2LDYgKzEwOTcsMTA0IEBAIGJvb2wgUGx1Z2luVmlldzo6dHJhbnNmb3Jtc0Fm
ZmVjdEZyYW1lUmVjdCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBpZnJh
bWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1l
WkluZGV4U3RhY2ssIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1Z2luWklu
ZGV4U3RhY2spCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZnJhbWVaSW5kZXhTdGFj
ay5zaXplKCkgJiYgaSA8IHBsdWdpblpJbmRleFN0YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAg
IC8vIFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiBXZSB3YW50IHRvIGl0
ZXJhdGUgcm9vdC1kb3dud2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20gdGhlIGVuZC4K
KyAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVTdGFja1Jvb3RPYmplY3QgPSBpZnJh
bWVaSW5kZXhTdGFja1tpZnJhbWVaSW5kZXhTdGFjay5zaXplKCkgLSAxIC0gaV07CisgICAgICAg
IGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luU3RhY2tSb290T2JqZWN0ID0gcGx1Z2luWkluZGV4
U3RhY2tbcGx1Z2luWkluZGV4U3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBpZiAoaWZy
YW1lU3RhY2tSb290T2JqZWN0ID09IHBsdWdpblN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUgc3RhY2sg
dGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBqdXN0IGJl
bG93IHRoZSBsb3dlc3QgY29tbWVudCBhbmNlc3Rvci4KKyAgICAgICAgLy8gRGV0ZXJtaW5lIHdo
aWNoIHNob3VsZCBiZSBvbiB0b3AuCisgICAgICAgIGlmIChpZnJhbWVTdGFja1Jvb3RPYmplY3Qt
PnN0eWxlKCkuekluZGV4KCkgPiBwbHVnaW5TdGFja1Jvb3RPYmplY3QtPnN0eWxlKCkuekluZGV4
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGlmcmFtZVN0YWNrUm9v
dE9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSA8IHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUo
KS56SW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBJZiB0
aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFja3MgYmVo
aW5kIHRoZSBpZnJhbWUuIFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0
aCBJRS4KKyAgICAgICAgaWYgKHBsdWdpblN0YWNrUm9vdE9iamVjdC0+c3R5bGUoKS5wb3NpdGlv
bigpID09IFN0YXRpY1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAvLyBUaGUgMCd0aCBlbGVtZW50
cyBvZiB0aGVzZSBSZW5kZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2luIG5vZGUg
YW5kIHRoZSBpZnJhbWUuCisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBsdWdpblJl
bmRlck9iamVjdCA9IHBsdWdpblpJbmRleFN0YWNrWzBdOworICAgICAgICAgICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVaSW5kZXhTdGFja1swXTsKKwor
ICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSA+IGlm
cmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS56SW5kZXgoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEluc3BlY3QgdGhlIGRvY3VtZW50IG9yZGVyLiBMYXRlciBvcmRlciBtZWFucyBoaWdoZXIg
c3RhY2tpbmcuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0gaWZyYW1lU3Rh
Y2tSb290T2JqZWN0LT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcGx1Z2luU3RhY2tSb290
T2JqZWN0LT5wYXJlbnQoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIGNo
aWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocGFyZW50KS0+Zmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKGNoaWxk
ID09IGlmcmFtZVN0YWNrUm9vdE9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBpZiAoY2hpbGQgPT0gcGx1Z2luU3RhY2tSb290T2JqZWN0KQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZyYW1lVmlld093bmVySUZyYW1lUmVuZGVyZXIo
Y29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit7CisgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSBmcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50IHx8
ICFlbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSA/IGVsZW1lbnQt
PnJlbmRlcmVyKCkgOiBudWxscHRyOworfQorCitzdGF0aWMgdm9pZCBidWlsZFpJbmRleFN0YWNr
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgeklu
ZGV4U3RhY2spCit7CisgICAgekluZGV4U3RhY2suY2xlYXIoKTsKKyAgICB3aGlsZSAocmVuZGVy
ZXIpIHsKKyAgICAgICAgekluZGV4U3RhY2suYXBwZW5kKHJlbmRlcmVyKTsKKyAgICAgICAgcmVu
ZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisgICAgfQorfQorCit2b2lkIFBsdWdpblZpZXc6
OmdldE9jY2x1c2lvbnNSZWdpb25CeUlGcmFtZXMoV2ViQ29yZTo6UmVnaW9uJiBvY2NsdXNpb25z
KSBjb25zdAoreworICAgIGlmICghcGFyZW50KCkgfHwgIXBhcmVudCgpLT5pc0ZyYW1lVmlldygp
KQorICAgICAgICByZXR1cm47CisgICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcgPSBkb3du
Y2FzdDxGcmFtZVZpZXc+KHBhcmVudCgpKTsKKworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmpl
Y3QqPiBwbHVnaW5aSW5kZXhTdGFjazsKKyAgICBidWlsZFpJbmRleFN0YWNrKG1fcGx1Z2luRWxl
bWVudC0+cmVuZGVyZXIoKSwgcGx1Z2luWkluZGV4U3RhY2spOworCisgICAgY29uc3QgSW50UmVj
dCYgcGx1Z2luUmVjdCA9IGZyYW1lUmVjdCgpOworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmpl
Y3QqPiBpZnJhbWVaSW5kZXhTdGFjazsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFy
ZW50RnJhbWVWaWV3LT5jaGlsZHJlbigpKSB7CisgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91
dCBGcmFtZVZpZXdzIGJlY2F1c2UgaWZyYW1lcyBzaG93IHVwIGFzIEZyYW1lVmlld3MuCisgICAg
ICAgIGlmICghY2hpbGQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVyID0gZnJhbWVWaWV3T3duZXJJRnJh
bWVSZW5kZXJlcihkb3duY2FzdDxGcmFtZVZpZXc+KGNoaWxkLmdldCgpKSk7CisgICAgICAgIGlm
ICghaWZyYW1lUmVuZGVyZXIgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaWZyYW1l
UmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkuaW50
ZXJzZWN0cyhwbHVnaW5SZWN0KSkgeworICAgICAgICAgICAgYnVpbGRaSW5kZXhTdGFjayhpZnJh
bWVSZW5kZXJlciwgaWZyYW1lWkluZGV4U3RhY2spOworCisgICAgICAgICAgICBpZiAoaWZyYW1l
SXNBYm92ZVBsdWdpbihpZnJhbWVaSW5kZXhTdGFjaywgcGx1Z2luWkluZGV4U3RhY2spKSB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyQm94KiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
ckJveD4oaWZyYW1lUmVuZGVyZXIpOworICAgICAgICAgICAgICAgIEludFBvaW50IHBvaW50ID0g
cm91bmRlZEludFBvaW50KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKSk7CisgICAgICAgICAg
ICAgICAgcG9pbnQubW92ZSgtcGx1Z2luUmVjdC54KCksIC1wbHVnaW5SZWN0LnkoKSk7CisgICAg
ICAgICAgICAgICAgSW50U2l6ZSBzaXplKHJlbmRlcmVyLT53aWR0aCgpLCByZW5kZXJlci0+aGVp
Z2h0KCkpOworICAgICAgICAgICAgICAgIG9jY2x1c2lvbnMudW5pdGUoSW50UmVjdChwb2ludCwg
c2l6ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIFBsdWdp
blZpZXc6OnZpZXdHZW9tZXRyeURpZENoYW5nZSgpCiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6
ZWQgfHwgIW1fcGx1Z2luIHx8ICFwYXJlbnQoKSkKQEAgLTExMjQsOCArMTIyMywxMiBAQCB2b2lk
IFBsdWdpblZpZXc6OnZpZXdHZW9tZXRyeURpZENoYW5nZSgpCiAgICAgICAgIGlmICghY2xpcFJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgY2xpcFJlY3QgPSBib3VuZHNSZWN0KCk7CiAgICAg
fQotICAgIAotICAgIG1fcGx1Z2luLT5nZW9tZXRyeURpZENoYW5nZShzaXplKCksIGNsaXBSZWN0
LCB0cmFuc2Zvcm0pOworCisgICAgV2ViQ29yZTo6UmVnaW9uIG9jY2x1c2lvbnM7CisgICAgaWYg
KG1fcGx1Z2luLT5pc1dpbmRvd2VkKCkpCisgICAgICAgIGdldE9jY2x1c2lvbnNSZWdpb25CeUlG
cmFtZXMob2NjbHVzaW9ucyk7CisKKyAgICBtX3BsdWdpbi0+Z2VvbWV0cnlEaWRDaGFuZ2Uoc2l6
ZSgpLCBjbGlwUmVjdCwgdHJhbnNmb3JtLCBvY2NsdXNpb25zKTsKIH0KIAogdm9pZCBQbHVnaW5W
aWV3Ojp2aWV3VmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC0xNzA1LDkgKzE4MDgsOSBAQCB1aW50
NjRfdCBQbHVnaW5WaWV3OjpjcmVhdGVQbHVnaW5Db250YWluZXIoKQogICAgIHJldHVybiB3aW5k
b3dJRDsKIH0KIAotdm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQordm9pZCBQbHVnaW5WaWV3Ojp3aW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lvbiYgb2NjbHVzaW9ucywgdWludDY0X3Qgd2luZG93SUQpCiB7Ci0gICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShm
cmFtZVJlY3QsIGNsaXBSZWN0LCBvY2NsdXNpb25zLCB3aW5kb3dJRCkpOwogfQogCiB2b2lkIFBs
dWdpblZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJs
ZSwgdWludDY0X3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAppbmRleCAzMDY4ZjA1Li45MTlkYmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTIyNiw3ICsyMjYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkgb3Zl
cnJpZGU7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgdWludDY0X3QgY3JlYXRl
UGx1Z2luQ29udGFpbmVyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21l
dHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3Qg
V2ViQ29yZTo6UmVnaW9uJiBvY2NsdXNpb25zLCB1aW50NjRfdCB3aW5kb3dJRCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2li
bGUsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0yNDAsNiArMjQw
LDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZlbnQ+IGNyZWF0ZVdl
YkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKIAorICAgIC8vIFJldHVybiBhIHJl
Z2lvbiB0aGF0IHNob3VsZCBub3QgYmUgb3ZlcmRyYXduIGJ5IHRoZSBwbHVnaW4gKCJjdXRvdXRz
IikuIFRoaXMgaGVscHMgaW1wbGVtZW50IHRoZSAiaWZyYW1lIHNoaW0iCisgICAgLy8gdGVjaG5p
cXVlIG9mIG92ZXJsYXlpbmcgYSB3aW5kb3dlZCBwbHVnaW4gd2l0aCBjb250ZW50IGZyb20gdGhl
IHBhZ2UuIElmcmFtZSBlbGVtZW50cyBzaG91bGQgb2NjbHVkZSBwbHVnaW5zIHdoZW4gdGhleSBv
Y2N1cgorICAgIC8vIGhpZ2hlciBpbiB0aGUgc3RhY2tpbmcgb3JkZXIuCisgICAgdm9pZCBnZXRP
Y2NsdXNpb25zUmVnaW9uQnlJRnJhbWVzKFdlYkNvcmU6OlJlZ2lvbiYpIGNvbnN0OworCiAgICAg
UmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAg
UmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwo=
</data>
<flag name="review"
          id="298997"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>