<?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>130081</bug_id>
          
          <creation_ts>2014-03-11 02:52:49 -0700</creation_ts>
          <short_desc>[GTK] Use GMainLoopSource for idle and timeout sources in WebKit2</short_desc>
          <delta_ts>2014-05-29 03:33:40 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>130027</dependson>
    
    <dependson>131220</dependson>
    
    <dependson>133348</dependson>
          <blocked>132326</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989327</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-11 02:52:49 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989328</commentid>
    <comment_count>1</comment_count>
      <attachid>226408</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-11 02:54:14 -0700</bug_when>
    <thetext>Created attachment 226408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989329</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-11 02:55:29 -0700</bug_when>
    <thetext>Attachment 226408 did not pass style-queue:


ERROR: Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:112:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:119:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 8 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>992994</commentid>
    <comment_count>3</comment_count>
      <attachid>227404</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-21 02:43:26 -0700</bug_when>
    <thetext>Created attachment 227404
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992996</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-21 02:45:19 -0700</bug_when>
    <thetext>Attachment 227404 did not pass style-queue:


ERROR: Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:112:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:119:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 8 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>1011925</commentid>
    <comment_count>5</comment_count>
      <attachid>232121</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-27 03:25:01 -0700</bug_when>
    <thetext>Created attachment 232121
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011927</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-27 03:28:18 -0700</bug_when>
    <thetext>Attachment 232121 did not pass style-queue:


ERROR: Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:112:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:119:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 8 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>1012196</commentid>
    <comment_count>7</comment_count>
      <attachid>232121</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-05-28 06:51:32 -0700</bug_when>
    <thetext>Comment on attachment 232121
Rebased patch

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

Nice. Just consider fixing the small style nit and the source naming issue that we discussed earlier when landing.

&gt; Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:89
&gt; +        if (condition &amp; G_IO_HUP || condition &amp; G_IO_ERR || condition &amp; G_IO_NVAL) {
&gt; +            closeFunction();
&gt; +            return GMainLoopSource::Stop;
&gt; +        }

Nit: Maybe one more level of indentation here?

&gt; Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:98
&gt; +        }, socket.get(), G_IO_IN,

It might make this a little less strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012197</commentid>
    <comment_count>8</comment_count>
      <attachid>232121</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-05-28 06:51:32 -0700</bug_when>
    <thetext>Comment on attachment 232121
Rebased patch

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

Nice. Just consider fixing the small style nit and the source naming issue that we discussed earlier when landing.

&gt; Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:89
&gt; +        if (condition &amp; G_IO_HUP || condition &amp; G_IO_ERR || condition &amp; G_IO_NVAL) {
&gt; +            closeFunction();
&gt; +            return GMainLoopSource::Stop;
&gt; +        }

Nit: Maybe one more level of indentation here?

&gt; Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp:98
&gt; +        }, socket.get(), G_IO_IN,

It might make this a little less strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012213</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-28 08:35:31 -0700</bug_when>
    <thetext>Committed r169423: &lt;http://trac.webkit.org/changeset/169423&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012224</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-28 09:19:55 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 133348</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012229</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-28 09:22:43 -0700</bug_when>
    <thetext>I&apos;m pretty sure the assert is harmless, I&apos;ve been using this patch for a long time with release builds and it has never crashed. I think the problem is in GMainLoopSource itself, not in this patch, or simply the assert is wrong. I&apos;ll debug it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012232</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-28 09:23:06 -0700</bug_when>
    <thetext>See also https://bugs.webkit.org/show_bug.cgi?id=131220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012390</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-29 03:33:40 -0700</bug_when>
    <thetext>Committed r169444: &lt;http://trac.webkit.org/changeset/169444&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226408</attachid>
            <date>2014-03-11 02:54:14 -0700</date>
            <delta_ts>2014-03-21 02:43:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-g-main-loop-source.diff</filename>
            <type>text/plain</type>
            <size>19128</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxNjg5ZGVhLi40Zjk2NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzkg
QEAKIDIwMTQtMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIFVzZSBHTWFpbkxvb3BTb3VyY2UgZm9yIGlkbGUgYW5kIHRpbWVv
dXQgc291cmNlcyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAwODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsYXRmb3JtL1dvcmtRdWV1ZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L2d0ay9Xb3JrUXVldWVHdGsuY3BwOgorICAgICAgICAoV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tl
dEV2ZW50SGFuZGxlcik6IFN0b3AgcHJldGVuZGluZyBpdCdzCisgICAgICAgIHBvc3NpYmxlIHRv
IHJlZ2lzdGVyIGEgc29ja2V0IGV2ZW50IGhhbmRsZXIgZm9yIG1vcmUgdGhhbiBvbmUKKyAgICAg
ICAgZGVzY3JpcHRvci4KKyAgICAgICAgKFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9h
ZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojp+RG93bmxvYWRDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2VMYXRlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpbkluZm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luSW5mb0NhY2hlOjp+UGx1Z2luSW5mb0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luSW5mb0NhY2hlOjpzYXZlVG9GaWxlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5m
b0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9n
dGsvUGx1Z2luSW5mb0NhY2hlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
TGF5ZXJUcmVlSG9zdEd0ayk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6Omxh
eWVyRmx1c2hUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
c2NoZWR1bGVMYXllckZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oOgorCisyMDE0LTAzLTEwICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBXZWJLaXQyV2ViRXh0ZW5z
aW9uIEdJUiBjYW4ndCBiZSB1c2VkIGluIHZhbGEKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzE3OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCmluZGV4IGUzMjJmNTkuLmU2NTk2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCkBAIC00Niw4ICs0Niw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+Ci10eXBlZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMpIChncG9pbnRlciBk
YXRhKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+
CiAjZW5kaWYKQEAgLTgwLDE5ICs4MCwxNCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGV4
ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVl
dWU7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgY2xhc3MgRXZlbnRTb3VyY2U7Ci0gICAgY2xh
c3MgU29ja2V0RXZlbnRTb3VyY2U7Ci0KICAgICBzdGF0aWMgdm9pZCBzdGFydFdvcmtRdWV1ZVRo
cmVhZChXb3JrUXVldWUqKTsKICAgICB2b2lkIHdvcmtRdWV1ZVRocmVhZEJvZHkoKTsKLSAgICB2
b2lkIGRpc3BhdGNoT25Tb3VyY2UoR1NvdXJjZSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4sIEdT
b3VyY2VGdW5jKTsKIAogICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7CiAg
ICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fZXZlbnRDb250ZXh0OwogICAgIE11dGV4IG1fZXZl
bnRMb29wTG9jazsKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9ldmVudExvb3A7Ci0gICAgTXV0
ZXggbV9ldmVudFNvdXJjZXNMb2NrOwotICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8U29ja2V0RXZl
bnRTb3VyY2UqPj4gbV9ldmVudFNvdXJjZXM7CisgICAgR01haW5Mb29wU291cmNlIG1fc29ja2V0
RXZlbnRTb3VyY2U7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPERpc3BhdGNoUXVl
dWU+IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9n
dGsvV29ya1F1ZXVlR3RrLmNwcAppbmRleCBkY2RkYzdmLi45NDliODYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcApAQCAtMjksODggKzI5LDcgQEAK
ICNpbmNsdWRlICJXb3JrUXVldWUuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRl
IDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgotCi0vLyBXb3JrUXVl
dWU6OkV2ZW50U291cmNlCi1jbGFzcyBXb3JrUXVldWU6OkV2ZW50U291cmNlIHsKLXB1YmxpYzoK
LSAgICBFdmVudFNvdXJjZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24sIFdvcmtRdWV1
ZSogd29ya1F1ZXVlKQotICAgICAgICA6IG1fZnVuY3Rpb24oc3RkOjptb3ZlKGZ1bmN0aW9uKSkK
LSAgICAgICAgLCBtX3dvcmtRdWV1ZSh3b3JrUXVldWUpCi0gICAgewotICAgICAgICBBU1NFUlQo
d29ya1F1ZXVlKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5FdmVudFNvdXJjZSgpIHsgfQotCi0g
ICAgdm9pZCBwZXJmb3JtV29yaygpCi0gICAgewotICAgICAgICBtX2Z1bmN0aW9uKCk7Ci0gICAg
fQotCi0gICAgc3RhdGljIGdib29sZWFuIHBlcmZvcm1Xb3JrT25jZShFdmVudFNvdXJjZSogZXZl
bnRTb3VyY2UpCi0gICAgewotICAgICAgICBBU1NFUlQoZXZlbnRTb3VyY2UpOwotICAgICAgICBl
dmVudFNvdXJjZS0+cGVyZm9ybVdvcmsoKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUV2ZW50U291cmNlKEV2ZW50U291cmNlKiBldmVudFNv
dXJjZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChldmVudFNvdXJjZSk7Ci0gICAgICAgIGRlbGV0
ZSBldmVudFNvdXJjZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBtX2Z1bmN0aW9uOwotICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwotfTsK
LQotY2xhc3MgV29ya1F1ZXVlOjpTb2NrZXRFdmVudFNvdXJjZSA6IHB1YmxpYyBXb3JrUXVldWU6
OkV2ZW50U291cmNlIHsKLXB1YmxpYzoKLSAgICBTb2NrZXRFdmVudFNvdXJjZShzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBXb3JrUXVldWUqIHdvcmtRdWV1ZSwgR0NhbmNlbGxhYmxl
KiBjYW5jZWxsYWJsZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjbG9zZUZ1bmN0aW9uKQotICAg
ICAgICA6IEV2ZW50U291cmNlKHN0ZDo6bW92ZShmdW5jdGlvbiksIHdvcmtRdWV1ZSkKLSAgICAg
ICAgLCBtX2NhbmNlbGxhYmxlKGNhbmNlbGxhYmxlKQotICAgICAgICAsIG1fY2xvc2VGdW5jdGlv
bihzdGQ6Om1vdmUoY2xvc2VGdW5jdGlvbikpCi0gICAgewotICAgICAgICBBU1NFUlQoY2FuY2Vs
bGFibGUpOwotICAgIH0KIAotICAgIHZvaWQgY2FuY2VsKCkKLSAgICB7Ci0gICAgICAgIGdfY2Fu
Y2VsbGFibGVfY2FuY2VsKG1fY2FuY2VsbGFibGUpOwotICAgIH0KLQotICAgIHZvaWQgZGlkQ2xv
c2UoKQotICAgIHsKLSAgICAgICAgbV9jbG9zZUZ1bmN0aW9uKCk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIGdib29sZWFuIGV2ZW50Q2FsbGJhY2soR1NvY2tldCogc29ja2V0LCBHSU9Db25kaXRpb24g
Y29uZGl0aW9uLCBTb2NrZXRFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UpCi0gICAgewotICAgICAg
ICBBU1NFUlQoZXZlbnRTb3VyY2UpOwotCi0gICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0hV
UCB8fCBjb25kaXRpb24gJiBHX0lPX0VSUikgewotICAgICAgICAgICAgZXZlbnRTb3VyY2UtPmRp
ZENsb3NlKCk7Ci0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoY29uZGl0aW9uICYgR19JT19JTikgewotICAgICAgICAgICAgZXZlbnRTb3VyY2UtPnBl
cmZvcm1Xb3JrKCk7Ci0gICAgICAgICAgICByZXR1cm4gVFJVRTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIEV2ZW50U291cmNlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmV0dXJuIEZBTFNFIHRvIGRl
c3Ryb3kgdGhlIHNvdXJjZS4KLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBHQ2FuY2VsbGFibGUqIG1fY2FuY2VsbGFibGU7Ci0gICAgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiBtX2Nsb3NlRnVuY3Rpb247Ci19OwotCi0vLyBXb3JrUXVldWUKIHN0YXRpYyBjb25z
dCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOwogCiB2b2lkIFdvcmtR
dWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUpCkBAIC0xNjIsNjkgKzgx
LDQwIEBAIHZvaWQgV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWRCb2R5KCkKIHZvaWQgV29ya1F1
ZXVlOjpyZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0b3IsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2xvc2VG
dW5jdGlvbikKIHsKICAgICBHUmVmUHRyPEdTb2NrZXQ+IHNvY2tldCA9IGFkb3B0R1JlZihnX3Nv
Y2tldF9uZXdfZnJvbV9mZChmaWxlRGVzY3JpcHRvciwgMCkpOwotICAgIEFTU0VSVChzb2NrZXQp
OwotICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2Nh
bmNlbGxhYmxlX25ldygpKTsKLSAgICBHUmVmUHRyPEdTb3VyY2U+IGRpc3BhdGNoU291cmNlID0g
YWRvcHRHUmVmKGdfc29ja2V0X2NyZWF0ZV9zb3VyY2Uoc29ja2V0LmdldCgpLCBHX0lPX0lOLCBj
YW5jZWxsYWJsZS5nZXQoKSkpOwotICAgIEFTU0VSVChkaXNwYXRjaFNvdXJjZSk7Ci0gICAgU29j
a2V0RXZlbnRTb3VyY2UqIGV2ZW50U291cmNlID0gbmV3IFNvY2tldEV2ZW50U291cmNlKHN0ZDo6
bW92ZShmdW5jdGlvbiksIHRoaXMsCi0gICAgICAgIGNhbmNlbGxhYmxlLmdldCgpLCBzdGQ6Om1v
dmUoY2xvc2VGdW5jdGlvbikpOwotCi0gICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKGRpc3BhdGNo
U291cmNlLmdldCgpLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPigmV29ya1F1ZXVlOjpT
b2NrZXRFdmVudFNvdXJjZTo6ZXZlbnRDYWxsYmFjayksCi0gICAgICAgIGV2ZW50U291cmNlLCBy
ZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PigmV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6
ZGVsZXRlRXZlbnRTb3VyY2UpKTsKLQotICAgIC8vIFNldCB1cCB0aGUgZXZlbnQgc291cmNlcyB1
bmRlciB0aGUgbXV0ZXggc2luY2UgdGhpcyBpcyBzaGFyZWQgYWNyb3NzIG11bHRpcGxlIHRocmVh
ZHMuCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9ldmVudFNvdXJjZXNMb2Nr
KTsKLSAgICAgICAgVmVjdG9yPFNvY2tldEV2ZW50U291cmNlKj4gc291cmNlczsKLSAgICAgICAg
YXV0byBpdCA9IG1fZXZlbnRTb3VyY2VzLmZpbmQoZmlsZURlc2NyaXB0b3IpOwotICAgICAgICBp
ZiAoaXQgIT0gbV9ldmVudFNvdXJjZXMuZW5kKCkpCi0gICAgICAgICAgICBzb3VyY2VzID0gaXQt
PnZhbHVlOwotCi0gICAgICAgIHNvdXJjZXMuYXBwZW5kKGV2ZW50U291cmNlKTsKLSAgICAgICAg
bV9ldmVudFNvdXJjZXMuc2V0KGZpbGVEZXNjcmlwdG9yLCBzb3VyY2VzKTsKLSAgICB9Ci0KLSAg
ICBnX3NvdXJjZV9hdHRhY2goZGlzcGF0Y2hTb3VyY2UuZ2V0KCksIG1fZXZlbnRDb250ZXh0Lmdl
dCgpKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIo
aW50IGZpbGVEZXNjcmlwdG9yKQotewotICAgIEFTU0VSVChmaWxlRGVzY3JpcHRvcik7Ci0KLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9ldmVudFNvdXJjZXNMb2NrKTsKLQotICAgIEFTU0VSVCht
X2V2ZW50U291cmNlcy5jb250YWlucyhmaWxlRGVzY3JpcHRvcikpOwotICAgIGF1dG8gaXQgPSBt
X2V2ZW50U291cmNlcy5maW5kKGZpbGVEZXNjcmlwdG9yKTsKKyAgICByZWYoKTsKKyAgICBtX3Nv
Y2tldEV2ZW50U291cmNlLnNjaGVkdWxlKCJbV2ViS2l0XSBXb3JrUXVldWU6OlNvY2tldEV2ZW50
SGFuZGxlciIsIFtmdW5jdGlvbiwgY2xvc2VGdW5jdGlvbl0oR0lPQ29uZGl0aW9uIGNvbmRpdGlv
bikgeworICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19IVVAgfHwgY29uZGl0aW9uICYgR19J
T19FUlIpIHsKKyAgICAgICAgICAgIGNsb3NlRnVuY3Rpb24oKTsKKyAgICAgICAgICAgIHJldHVy
biBHTWFpbkxvb3BTb3VyY2U6OlN0b3A7CisgICAgICAgIH0KIAotICAgIGlmIChpdCAhPSBtX2V2
ZW50U291cmNlcy5lbmQoKSkgewotICAgICAgICBWZWN0b3I8U29ja2V0RXZlbnRTb3VyY2UqPiBz
b3VyY2VzID0gaXQtPnZhbHVlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291
cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIHNvdXJjZXNbaV0tPmNhbmNlbCgpOworICAg
ICAgICBpZiAoY29uZGl0aW9uICYgR19JT19JTikgeworICAgICAgICAgICAgZnVuY3Rpb24oKTsK
KyAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOworICAgICAgICB9
CiAKLSAgICAgICAgbV9ldmVudFNvdXJjZXMucmVtb3ZlKGl0KTsKLSAgICB9CisgICAgICAgIC8v
IEV2ZW50U291cmNlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmV0dXJuIGZhbHNlIHRvIGRlc3Ryb3kg
dGhlIHNvdXJjZS4KKyAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6U3RvcDsKKyAgICAg
ICAgfSwgc29ja2V0LmdldCgpLCBHX0lPX0lOLAorICAgICAgICBbdGhpc10oKSB7IGRlcmVmKCk7
IH0sCisgICAgICAgIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKIH0KIAotdm9pZCBXb3JrUXVldWU6
OmRpc3BhdGNoT25Tb3VyY2UoR1NvdXJjZSogZGlzcGF0Y2hTb3VyY2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gZnVuY3Rpb24sIEdTb3VyY2VGdW5jIHNvdXJjZUNhbGxiYWNrKQordm9pZCBXb3Jr
UXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KQogewotICAgIGdfc291cmNl
X3NldF9jYWxsYmFjayhkaXNwYXRjaFNvdXJjZSwgc291cmNlQ2FsbGJhY2ssIG5ldyBFdmVudFNv
dXJjZShzdGQ6Om1vdmUoZnVuY3Rpb24pLCB0aGlzKSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxHRGVzdHJveU5vdGlmeT4oJldvcmtRdWV1ZTo6RXZlbnRTb3VyY2U6OmRlbGV0ZUV2ZW50U291
cmNlKSk7Ci0KLSAgICBnX3NvdXJjZV9hdHRhY2goZGlzcGF0Y2hTb3VyY2UsIG1fZXZlbnRDb250
ZXh0LmdldCgpKTsKKyAgICBtX3NvY2tldEV2ZW50U291cmNlLmNhbmNlbCgpOwogfQogCiB2b2lk
IFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKIHsK
LSAgICBHUmVmUHRyPEdTb3VyY2U+IGRpc3BhdGNoU291cmNlID0gYWRvcHRHUmVmKGdfaWRsZV9z
b3VyY2VfbmV3KCkpOwotICAgIGdfc291cmNlX3NldF9wcmlvcml0eShkaXNwYXRjaFNvdXJjZS5n
ZXQoKSwgR19QUklPUklUWV9ERUZBVUxUKTsKLSAgICBkaXNwYXRjaE9uU291cmNlKGRpc3BhdGNo
U291cmNlLmdldCgpLCBzdGQ6Om1vdmUoZnVuY3Rpb24pLAotICAgICAgICByZWludGVycHJldF9j
YXN0PEdTb3VyY2VGdW5jPigmV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6cGVyZm9ybVdvcmtPbmNl
KSk7CisgICAgcmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpjcmVhdGUoKS5zY2hlZHVsZSgi
W1dlYktpdF0gV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6cGVyZm9ybVdvcmtPbmNlIiwgc3RkOjpt
b3ZlKGZ1bmN0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICBbdGhpc10oKSB7IGRl
cmVmKCk7IH0sIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQogewotICAgIEdSZWZQdHI8R1NvdXJjZT4gZGlzcGF0Y2hT
b3VyY2UgPSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoCi0gICAgICAgIHN0YXRpY19j
YXN0PGd1aW50PihzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzPihkdXJhdGlvbikuY291bnQoKSkpKTsKLSAgICBkaXNwYXRjaE9uU291cmNlKGRpc3Bh
dGNoU291cmNlLmdldCgpLCBzdGQ6Om1vdmUoZnVuY3Rpb24pLAotICAgICAgICByZWludGVycHJl
dF9jYXN0PEdTb3VyY2VGdW5jPigmV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6cGVyZm9ybVdvcmtP
bmNlKSk7CisgICAgcmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpjcmVhdGUoKS5zY2hlZHVs
ZUFmdGVyRGVsYXkoIltXZWJLaXRdIFdvcmtRdWV1ZTo6RXZlbnRTb3VyY2U6OnBlcmZvcm1Xb3Jr
T25jZSIsIHN0ZDo6bW92ZShmdW5jdGlvbiksCisgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklUWV9E
RUZBVUxULCBbdGhpc10oKSB7IGRlcmVmKCk7IH0sIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9h
ZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2Fk
U291cC5jcHAKaW5kZXggNDA3ZTQ0Ny4uZGVmOGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDksMTQgKzUwLDExIEBAIGNsYXNzIERvd25s
b2FkQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBE
b3dubG9hZENsaWVudChEb3dubG9hZCogZG93bmxvYWQpCiAgICAgICAgIDogbV9kb3dubG9hZChk
b3dubG9hZCkKLSAgICAgICAgLCBtX2hhbmRsZVJlc3BvbnNlTGF0ZXJJRCgwKQogICAgIHsKICAg
ICB9CiAKICAgICB+RG93bmxvYWRDbGllbnQoKQogICAgIHsKLSAgICAgICAgaWYgKG1faGFuZGxl
UmVzcG9uc2VMYXRlcklEKQotICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faGFuZGxlUmVz
cG9uc2VMYXRlcklEKTsKICAgICB9CiAKICAgICB2b2lkIGRlbGV0ZUludGVybWVkaWF0ZUZpbGVJ
bk5lZWRlZCgpCkBAIC0xMTcsOCArMTE1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKICAgICB7Ci0gICAgICAgIGlmIChtX2hhbmRs
ZVJlc3BvbnNlTGF0ZXJJRCkgewotICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faGFuZGxl
UmVzcG9uc2VMYXRlcklEKTsKKyAgICAgICAgaWYgKG1faGFuZGxlUmVzcG9uc2VMYXRlci5pc1Nj
aGVkdWxlZCgpKSB7CisgICAgICAgICAgICBtX2hhbmRsZVJlc3BvbnNlTGF0ZXIuY2FuY2VsKCk7
CiAgICAgICAgICAgICBoYW5kbGVSZXNwb25zZSgpOwogICAgICAgICB9CiAKQEAgLTE3NywyNiAr
MTc1LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFuZGxlUmVzcG9uc2UoKQogICAgIHsKLSAg
ICAgICAgbV9oYW5kbGVSZXNwb25zZUxhdGVySUQgPSAwOwotICAgICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UoMCwgbV9kZWxheWVkUmVzcG9uc2UpOwotICAgIH0KLQotICAgIHN0YXRpYyBnYm9vbGVh
biBoYW5kbGVSZXNwb25zZUxhdGVyQ2FsbGJhY2soRG93bmxvYWRDbGllbnQqIGRvd25sb2FkQ2xp
ZW50KQotICAgIHsKLSAgICAgICAgZG93bmxvYWRDbGllbnQtPmhhbmRsZVJlc3BvbnNlKCk7Ci0g
ICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKG51bGxwdHIs
IG1fZGVsYXllZFJlc3BvbnNlKTsKICAgICB9CiAKICAgICB2b2lkIGhhbmRsZVJlc3BvbnNlTGF0
ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9yZXNwb25zZS5pc051bGwoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9oYW5kbGVSZXNwb25z
ZUxhdGVySUQpOworICAgICAgICBBU1NFUlQoIW1faGFuZGxlUmVzcG9uc2VMYXRlci5pc1NjaGVk
dWxlZCgpKTsKIAogICAgICAgICBtX2RlbGF5ZWRSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAg
ICAgIC8vIENhbGwgZGlkUmVjZWl2ZVJlc3BvbnNlIGluIGFuIGlkbGUgdG8gbWFrZSBzdXJlIHRo
ZSBkb3dubG9hZCBpcyBhZGRlZAogICAgICAgICAvLyB0byB0aGUgRG93bmxvYWRNYW5hZ2VyIGRv
d25sb2FkcyBtYXAuCi0gICAgICAgIG1faGFuZGxlUmVzcG9uc2VMYXRlcklEID0gZ19pZGxlX2Fk
ZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4o
aGFuZGxlUmVzcG9uc2VMYXRlckNhbGxiYWNrKSwgdGhpcywgMCk7CisgICAgICAgIG1faGFuZGxl
UmVzcG9uc2VMYXRlci5zY2hlZHVsZSgiW1dlYktpdF0gRG93bmxvYWRIYW5kbGVSZXNwb25zZUxh
dGVyIiwgc3RkOjpiaW5kKCZEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2UsIHRoaXMpKTsK
ICAgICB9CiAKICAgICBEb3dubG9hZCogbV9kb3dubG9hZDsKQEAgLTIwNSw3ICsxOTYsNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIG1fZGVzdGluYXRpb25VUkk7CiAgICAgR1JlZlB0cjxHRmlsZT4g
bV9pbnRlcm1lZGlhdGVGaWxlOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9kZWxheWVkUmVzcG9u
c2U7Ci0gICAgdW5zaWduZWQgbV9oYW5kbGVSZXNwb25zZUxhdGVySUQ7CisgICAgR01haW5Mb29w
U291cmNlIG1faGFuZGxlUmVzcG9uc2VMYXRlcjsKIH07CiAKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVn
aW5JbmZvQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1Bs
dWdpbkluZm9DYWNoZS5jcHAKaW5kZXggNzJlNDUxNC4uNGQ2MzQwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5j
cHAKQEAgLTQ1LDcgKzQ1LDYgQEAgUGx1Z2luSW5mb0NhY2hlJiBQbHVnaW5JbmZvQ2FjaGU6OnNo
YXJlZCgpCiBQbHVnaW5JbmZvQ2FjaGU6OlBsdWdpbkluZm9DYWNoZSgpCiAgICAgOiBtX2NhY2hl
RmlsZShnX2tleV9maWxlX25ldygpKQogICAgICwgbV9jYWNoZVBhdGgoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgInBsdWdpbnMiLCBudWxscHRy
KSkKLSAgICAsIG1fc2F2ZVRvRmlsZUlkbGVJZCgwKQogewogICAgIGdfa2V5X2ZpbGVfbG9hZF9m
cm9tX2ZpbGUobV9jYWNoZUZpbGUuZ2V0KCksIG1fY2FjaGVQYXRoLmdldCgpLCBHX0tFWV9GSUxF
X05PTkUsIG51bGxwdHIpOwogCkBAIC02MywyMiArNjIsMTUgQEAgUGx1Z2luSW5mb0NhY2hlOjpQ
bHVnaW5JbmZvQ2FjaGUoKQogCiBQbHVnaW5JbmZvQ2FjaGU6On5QbHVnaW5JbmZvQ2FjaGUoKQog
ewotICAgIGlmIChtX3NhdmVUb0ZpbGVJZGxlSWQpIHsKLSAgICAgICAgZ19zb3VyY2VfcmVtb3Zl
KG1fc2F2ZVRvRmlsZUlkbGVJZCk7CisgICAgaWYgKG1fc2F2ZVRvRmlsZUlkbGUuaXNTY2hlZHVs
ZWQoKSkgeworICAgICAgICBtX3NhdmVUb0ZpbGVJZGxlLmNhbmNlbCgpOwogICAgICAgICBzYXZl
VG9GaWxlKCk7CiAgICAgfQogfQogCi1nYm9vbGVhbiBQbHVnaW5JbmZvQ2FjaGU6OnNhdmVUb0Zp
bGVJZGxlQ2FsbGJhY2soUGx1Z2luSW5mb0NhY2hlKiBjYWNoZSkKLXsKLSAgICBjYWNoZS0+c2F2
ZVRvRmlsZSgpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6
OnNhdmVUb0ZpbGUoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1f
bXV0ZXgpOwotICAgIG1fc2F2ZVRvRmlsZUlkbGVJZCA9IDA7CiAKICAgICBnc2l6ZSBkYXRhTGVu
Z3RoOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGF0YShnX2tleV9maWxlX3RvX2RhdGEobV9jYWNo
ZUZpbGUuZ2V0KCksICZkYXRhTGVuZ3RoLCBudWxscHRyKSk7CkBAIC0xMzMsMTAgKzEyNSwxMCBA
QCB2b2lkIFBsdWdpbkluZm9DYWNoZTo6dXBkYXRlUGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIGNvbnN0IFBsdWdpbk1vZAogICAgIC8vIFNhdmUgdGhlIGNhY2hlIGZpbGUgaW4g
YW4gaWRsZSB0byBtYWtlIHN1cmUgaXQgaGFwcGVucyBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kCiAg
ICAgLy8gaXQncyBkb25lIG9ubHkgb25jZSB3aGVuIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRp
bWVzIGluIGEgdmVyeSBzaG9ydCB0aW1lLgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4
PiBsb2NrKG1fbXV0ZXgpOwotICAgIGlmIChtX3NhdmVUb0ZpbGVJZGxlSWQpCisgICAgaWYgKG1f
c2F2ZVRvRmlsZUlkbGUuaXNTY2hlZHVsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9z
YXZlVG9GaWxlSWRsZUlkID0gZ19pZGxlX2FkZChyZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5j
PihQbHVnaW5JbmZvQ2FjaGU6OnNhdmVUb0ZpbGVJZGxlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBt
X3NhdmVUb0ZpbGVJZGxlLnNjaGVkdWxlKCJbV2ViS2l0XSBQbHVnaW5JbmZvQ2FjaGU6OnNhdmVU
b0ZpbGUiLCBzdGQ6OmJpbmQoJlBsdWdpbkluZm9DYWNoZTo6c2F2ZVRvRmlsZSwgdGhpcyksIEdf
UFJJT1JJVFlfREVGQVVMVF9JRExFKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0Nh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0Nh
Y2hlLmgKaW5kZXggMzI3MmRjMC4uZGYyYjI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKICNpbmNsdWRlIDxtdXRleD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFp
bkxvb3BTb3VyY2UuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNDksMTEgKzUwLDEwIEBAIHByaXZhdGU6CiAgICAgflBsdWdp
bkluZm9DYWNoZSgpOwogCiAgICAgdm9pZCBzYXZlVG9GaWxlKCk7Ci0gICAgc3RhdGljIGdib29s
ZWFuIHNhdmVUb0ZpbGVJZGxlQ2FsbGJhY2soUGx1Z2luSW5mb0NhY2hlKik7CiAKICAgICBHVW5p
cXVlUHRyPEdLZXlGaWxlPiBtX2NhY2hlRmlsZTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IG1fY2Fj
aGVQYXRoOwotICAgIHVuc2lnbmVkIG1fc2F2ZVRvRmlsZUlkbGVJZDsKKyAgICBHTWFpbkxvb3BT
b3VyY2UgbV9zYXZlVG9GaWxlSWRsZTsKICAgICBzdGQ6Om11dGV4IG1fbXV0ZXg7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXll
clRyZWVIb3N0R3RrLmNwcAppbmRleCAzNGYwYzEyLi40MGM0ZTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5jcHAKQEAgLTc0LDcgKzc0LDYgQEAgTGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0
ayhXZWJQYWdlKiB3ZWJQYWdlKQogICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1
c2goZmFsc2UpCiAgICAgLCBtX2xhc3RGbHVzaFRpbWUoMCkKICAgICAsIG1fbGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKHRydWUpCi0gICAgLCBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQo
MCkKIHsKIH0KIApAQCAtMjkyLDI0ICsyOTEsMTUgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWMK
ICAgICB9CiB9CiAKLWdib29sZWFuIExheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZp
cmVkQ2FsbGJhY2soTGF5ZXJUcmVlSG9zdEd0ayogbGF5ZXJUcmVlSG9zdCkKLXsKLSAgICBsYXll
clRyZWVIb3N0LT5sYXllckZsdXNoVGltZXJGaXJlZCgpOwotICAgIHJldHVybiBGQUxTRTsKLX0K
LQogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpsYXllckZsdXNoVGltZXJGaXJlZCgpCiB7Ci0gICAg
QVNTRVJUKG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCk7Ci0gICAgbV9sYXllckZsdXNoVGlt
ZXJDYWxsYmFja0lkID0gMDsKLQogICAgIGZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7CiAKLSAgICBp
ZiAodG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5kZXNjZW5kYW50c09y
U2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpICYmICFtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNr
SWQpIHsKKyAgICBpZiAoIW1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2suaXNTY2hlZHVsZWQoKSAm
JiB0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPmRlc2NlbmRhbnRzT3JT
ZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkpIHsKICAgICAgICAgY29uc3QgZG91YmxlIHRhcmdl
dEZQUyA9IDYwOwogICAgICAgICBkb3VibGUgbmV4dEZsdXNoID0gc3RkOjptYXgoKDEgLyB0YXJn
ZXRGUFMpIC0gKGN1cnJlbnRUaW1lKCkgLSBtX2xhc3RGbHVzaFRpbWUpLCAwLjApOwotICAgICAg
ICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR0RLX1BS
SU9SSVRZX0VWRU5UUywgbmV4dEZsdXNoICogMTAwMC4wLCByZWludGVycHJldF9jYXN0PEdTb3Vy
Y2VGdW5jPihsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrKSwgdGhpcywgMCk7Ci0gICAgICAg
IGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCwgIltX
ZWJLaXRdIGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2siKTsKKyAgICAgICAgbV9sYXllckZs
dXNoVGltZXJDYWxsYmFjay5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIGxheWVyRmx1c2hU
aW1lciIsIHN0ZDo6YmluZCgmTGF5ZXJUcmVlSG9zdEd0azo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQs
IHRoaXMpLAorICAgICAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4obmV4dEZsdXNo
KSksIEdES19QUklPUklUWV9FVkVOVFMpOwogICAgIH0KIH0KIApAQCAtNDA4LDEwICszOTgsOCBA
QCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFdlIHVzZSBhIEdMaWIgdGltZXIgYmVjYXVzZSBvdGhlcndpc2UgR1RL
KyBldmVudCBoYW5kbGluZyBkdXJpbmcgZHJhZ2dpbmcgY2FuIHN0YXJ2ZSBXZWJDb3JlIHRpbWVy
cywgd2hpY2ggaGF2ZSBhIGxvd2VyIHByaW9yaXR5LgotICAgIGlmICghbV9sYXllckZsdXNoVGlt
ZXJDYWxsYmFja0lkKSB7Ci0gICAgICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9IGdf
dGltZW91dF9hZGRfZnVsbChHREtfUFJJT1JJVFlfRVZFTlRTLCAwLCByZWludGVycHJldF9jYXN0
PEdTb3VyY2VGdW5jPihsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrKSwgdGhpcywgMCk7Ci0g
ICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJ
ZCwgIltXZWJLaXRdIGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2siKTsKLSAgICB9CisgICAg
aWYgKCFtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLmlzU2NoZWR1bGVkKCkpCisgICAgICAgIG1f
bGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2suc2NoZWR1bGUoIltXZWJLaXRdIGxheWVyRmx1c2hUaW1l
ciIsIHN0ZDo6YmluZCgmTGF5ZXJUcmVlSG9zdEd0azo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQsIHRo
aXMpLCBHREtfUFJJT1JJVFlfRVZFTlRTKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpz
ZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5hYmxlZCkK
QEAgLTQzNiwxMSArNDI0LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpwYWdlQmFja2dyb3Vu
ZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmNhbmNlbFBl
bmRpbmdMYXllckZsdXNoKCkKIHsKLSAgICBpZiAoIW1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJ
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ19zb3VyY2VfcmVtb3ZlKG1fbGF5ZXJGbHVzaFRp
bWVyQ2FsbGJhY2tJZCk7Ci0gICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkID0gMDsKKyAg
ICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLmNhbmNlbCgpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggMWNiY2YzZS4uNjUzMjdlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3Rr
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTkyLDcgKzkzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNl
bFBlbmRpbmdMYXllckZsdXNoKCk7CiAKICAgICB2b2lkIGxheWVyRmx1c2hUaW1lckZpcmVkKCk7
Ci0gICAgc3RhdGljIGdib29sZWFuIGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2soTGF5ZXJU
cmVlSG9zdEd0ayopOwogCiAgICAgV2ViQ29yZTo6R0xDb250ZXh0KiBnbENvbnRleHQoKTsKIApA
QCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OkdMQ29udGV4
dD4gbV9jb250ZXh0OwogICAgIGRvdWJsZSBtX2xhc3RGbHVzaFRpbWU7CiAgICAgYm9vbCBtX2xh
eWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKLSAgICB1bnNpZ25lZCBtX2xheWVyRmx1c2hUaW1l
ckNhbGxiYWNrSWQ7CisgICAgR01haW5Mb29wU291cmNlIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJh
Y2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227404</attachid>
            <date>2014-03-21 02:43:26 -0700</date>
            <delta_ts>2014-05-27 03:25:01 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-gmain-loop-source.diff</filename>
            <type>text/plain</type>
            <size>19318</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3NmE0ODI3Li5mMTIxNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTQtMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBHTWFpbkxvb3BTb3VyY2UgZm9yIGlkbGUgYW5kIHRpbWVv
dXQgc291cmNlcyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAwODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsYXRmb3JtL1dvcmtRdWV1ZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L2d0ay9Xb3JrUXVldWVHdGsuY3BwOgorICAgICAgICAoV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tl
dEV2ZW50SGFuZGxlcik6IFN0b3AgcHJldGVuZGluZyBpdCdzCisgICAgICAgIHBvc3NpYmxlIHRv
IHJlZ2lzdGVyIGEgc29ja2V0IGV2ZW50IGhhbmRsZXIgZm9yIG1vcmUgdGhhbiBvbmUKKyAgICAg
ICAgZGVzY3JpcHRvci4KKyAgICAgICAgKFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9h
ZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojp+RG93bmxvYWRDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2VMYXRlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpbkluZm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luSW5mb0NhY2hlOjp+UGx1Z2luSW5mb0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luSW5mb0NhY2hlOjpzYXZlVG9GaWxlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5m
b0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9n
dGsvUGx1Z2luSW5mb0NhY2hlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
TGF5ZXJUcmVlSG9zdEd0ayk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6Omxh
eWVyRmx1c2hUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
c2NoZWR1bGVMYXllckZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oOgorCiAyMDE0LTAzLTE5ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3MgbGF0ZSByZXZpZXcgY29tbWVu
dCBhbmQgc3R5bGUgbml0IGFmdGVyIHIxNjU5MzQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCmluZGV4IGUzMjJmNTkuLmU2NTk2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCkBAIC00Niw4ICs0Niw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+Ci10eXBlZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMpIChncG9pbnRlciBk
YXRhKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+
CiAjZW5kaWYKQEAgLTgwLDE5ICs4MCwxNCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGV4
ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVl
dWU7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgY2xhc3MgRXZlbnRTb3VyY2U7Ci0gICAgY2xh
c3MgU29ja2V0RXZlbnRTb3VyY2U7Ci0KICAgICBzdGF0aWMgdm9pZCBzdGFydFdvcmtRdWV1ZVRo
cmVhZChXb3JrUXVldWUqKTsKICAgICB2b2lkIHdvcmtRdWV1ZVRocmVhZEJvZHkoKTsKLSAgICB2
b2lkIGRpc3BhdGNoT25Tb3VyY2UoR1NvdXJjZSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4sIEdT
b3VyY2VGdW5jKTsKIAogICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7CiAg
ICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fZXZlbnRDb250ZXh0OwogICAgIE11dGV4IG1fZXZl
bnRMb29wTG9jazsKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9ldmVudExvb3A7Ci0gICAgTXV0
ZXggbV9ldmVudFNvdXJjZXNMb2NrOwotICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8U29ja2V0RXZl
bnRTb3VyY2UqPj4gbV9ldmVudFNvdXJjZXM7CisgICAgR01haW5Mb29wU291cmNlIG1fc29ja2V0
RXZlbnRTb3VyY2U7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPERpc3BhdGNoUXVl
dWU+IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9n
dGsvV29ya1F1ZXVlR3RrLmNwcAppbmRleCBhZTAzYzQ3Li4yNGJlODFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcApAQCAtMjksOTggKzI5LDcgQEAK
ICNpbmNsdWRlICJXb3JrUXVldWUuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRl
IDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgotCi0vLyBXb3JrUXVl
dWU6OkV2ZW50U291cmNlCi1jbGFzcyBXb3JrUXVldWU6OkV2ZW50U291cmNlIHsKLXB1YmxpYzoK
LSAgICBFdmVudFNvdXJjZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24sIFdvcmtRdWV1
ZSogd29ya1F1ZXVlKQotICAgICAgICA6IG1fZnVuY3Rpb24oc3RkOjptb3ZlKGZ1bmN0aW9uKSkK
LSAgICAgICAgLCBtX3dvcmtRdWV1ZSh3b3JrUXVldWUpCi0gICAgewotICAgICAgICBBU1NFUlQo
d29ya1F1ZXVlKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5FdmVudFNvdXJjZSgpIHsgfQotCi0g
ICAgdm9pZCBwZXJmb3JtV29yaygpCi0gICAgewotICAgICAgICBtX2Z1bmN0aW9uKCk7Ci0gICAg
fQotCi0gICAgc3RhdGljIGdib29sZWFuIHBlcmZvcm1Xb3JrT25jZShFdmVudFNvdXJjZSogZXZl
bnRTb3VyY2UpCi0gICAgewotICAgICAgICBBU1NFUlQoZXZlbnRTb3VyY2UpOwotICAgICAgICBl
dmVudFNvdXJjZS0+cGVyZm9ybVdvcmsoKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUV2ZW50U291cmNlKEV2ZW50U291cmNlKiBldmVudFNv
dXJjZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChldmVudFNvdXJjZSk7Ci0gICAgICAgIGRlbGV0
ZSBldmVudFNvdXJjZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBtX2Z1bmN0aW9uOwotICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwotfTsK
LQotY2xhc3MgV29ya1F1ZXVlOjpTb2NrZXRFdmVudFNvdXJjZSA6IHB1YmxpYyBXb3JrUXVldWU6
OkV2ZW50U291cmNlIHsKLXB1YmxpYzoKLSAgICBTb2NrZXRFdmVudFNvdXJjZShzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBXb3JrUXVldWUqIHdvcmtRdWV1ZSwgR0NhbmNlbGxhYmxl
KiBjYW5jZWxsYWJsZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjbG9zZUZ1bmN0aW9uKQotICAg
ICAgICA6IEV2ZW50U291cmNlKHN0ZDo6bW92ZShmdW5jdGlvbiksIHdvcmtRdWV1ZSkKLSAgICAg
ICAgLCBtX2NhbmNlbGxhYmxlKGNhbmNlbGxhYmxlKQotICAgICAgICAsIG1fY2xvc2VGdW5jdGlv
bihzdGQ6Om1vdmUoY2xvc2VGdW5jdGlvbikpCi0gICAgewotICAgICAgICBBU1NFUlQoY2FuY2Vs
bGFibGUpOwotICAgIH0KLQotICAgIHZvaWQgY2FuY2VsKCkKLSAgICB7Ci0gICAgICAgIGdfY2Fu
Y2VsbGFibGVfY2FuY2VsKG1fY2FuY2VsbGFibGUpOwotICAgIH0KLQotICAgIHZvaWQgZGlkQ2xv
c2UoKQotICAgIHsKLSAgICAgICAgbV9jbG9zZUZ1bmN0aW9uKCk7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0NhbmNlbGxlZCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZ19jYW5jZWxsYWJs
ZV9pc19jYW5jZWxsZWQobV9jYW5jZWxsYWJsZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGdib29s
ZWFuIGV2ZW50Q2FsbGJhY2soR1NvY2tldCosIEdJT0NvbmRpdGlvbiBjb25kaXRpb24sIFNvY2tl
dEV2ZW50U291cmNlKiBldmVudFNvdXJjZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChldmVudFNv
dXJjZSk7Ci0KLSAgICAgICAgaWYgKGV2ZW50U291cmNlLT5pc0NhbmNlbGxlZCgpKSB7Ci0gICAg
ICAgICAgICAvLyBFdmVudFNvdXJjZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJldHVybiBGQUxTRSB0
byBkZXN0cm95IHRoZSBzb3VyY2UuCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19IVVAgfHwgY29uZGl0aW9uICYgR19J
T19FUlIgfHwgY29uZGl0aW9uICYgR19JT19OVkFMKSB7Ci0gICAgICAgICAgICBldmVudFNvdXJj
ZS0+ZGlkQ2xvc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQogCi0g
ICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0lOKSB7Ci0gICAgICAgICAgICBldmVudFNvdXJj
ZS0+cGVyZm9ybVdvcmsoKTsKLSAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICB9Ci0K
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgR0NhbmNlbGxhYmxlKiBtX2NhbmNlbGxhYmxlOwotICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9jbG9zZUZ1bmN0aW9uOwotfTsKLQotLy8gV29ya1F1ZXVl
CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQgPSAzMTsK
IAogdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lKQpA
QCAtMTcyLDY5ICs4MSw0MCBAQCB2b2lkIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkQm9keSgp
CiB2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNj
cmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+IGNsb3NlRnVuY3Rpb24pCiB7CiAgICAgR1JlZlB0cjxHU29ja2V0PiBzb2NrZXQgPSBh
ZG9wdEdSZWYoZ19zb2NrZXRfbmV3X2Zyb21fZmQoZmlsZURlc2NyaXB0b3IsIDApKTsKLSAgICBB
U1NFUlQoc29ja2V0KTsKLSAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGUgPSBh
ZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7Ci0gICAgR1JlZlB0cjxHU291cmNlPiBkaXNw
YXRjaFNvdXJjZSA9IGFkb3B0R1JlZihnX3NvY2tldF9jcmVhdGVfc291cmNlKHNvY2tldC5nZXQo
KSwgR19JT19JTiwgY2FuY2VsbGFibGUuZ2V0KCkpKTsKLSAgICBBU1NFUlQoZGlzcGF0Y2hTb3Vy
Y2UpOwotICAgIFNvY2tldEV2ZW50U291cmNlKiBldmVudFNvdXJjZSA9IG5ldyBTb2NrZXRFdmVu
dFNvdXJjZShzdGQ6Om1vdmUoZnVuY3Rpb24pLCB0aGlzLAotICAgICAgICBjYW5jZWxsYWJsZS5n
ZXQoKSwgc3RkOjptb3ZlKGNsb3NlRnVuY3Rpb24pKTsKLQotICAgIGdfc291cmNlX3NldF9jYWxs
YmFjayhkaXNwYXRjaFNvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4o
JldvcmtRdWV1ZTo6U29ja2V0RXZlbnRTb3VyY2U6OmV2ZW50Q2FsbGJhY2spLAotICAgICAgICBl
dmVudFNvdXJjZSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oJldvcmtRdWV1ZTo6
RXZlbnRTb3VyY2U6OmRlbGV0ZUV2ZW50U291cmNlKSk7Ci0KLSAgICAvLyBTZXQgdXAgdGhlIGV2
ZW50IHNvdXJjZXMgdW5kZXIgdGhlIG11dGV4IHNpbmNlIHRoaXMgaXMgc2hhcmVkIGFjcm9zcyBt
dWx0aXBsZSB0aHJlYWRzLgotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZXZl
bnRTb3VyY2VzTG9jayk7Ci0gICAgICAgIFZlY3RvcjxTb2NrZXRFdmVudFNvdXJjZSo+IHNvdXJj
ZXM7Ci0gICAgICAgIGF1dG8gaXQgPSBtX2V2ZW50U291cmNlcy5maW5kKGZpbGVEZXNjcmlwdG9y
KTsKLSAgICAgICAgaWYgKGl0ICE9IG1fZXZlbnRTb3VyY2VzLmVuZCgpKQotICAgICAgICAgICAg
c291cmNlcyA9IGl0LT52YWx1ZTsKLQotICAgICAgICBzb3VyY2VzLmFwcGVuZChldmVudFNvdXJj
ZSk7Ci0gICAgICAgIG1fZXZlbnRTb3VyY2VzLnNldChmaWxlRGVzY3JpcHRvciwgc291cmNlcyk7
Ci0gICAgfQotCi0gICAgZ19zb3VyY2VfYXR0YWNoKGRpc3BhdGNoU291cmNlLmdldCgpLCBtX2V2
ZW50Q29udGV4dC5nZXQoKSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0
RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKLXsKLSAgICBBU1NFUlQoZmlsZURlc2Ny
aXB0b3IpOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZXZlbnRTb3VyY2VzTG9jayk7Ci0K
LSAgICBBU1NFUlQobV9ldmVudFNvdXJjZXMuY29udGFpbnMoZmlsZURlc2NyaXB0b3IpKTsKLSAg
ICBhdXRvIGl0ID0gbV9ldmVudFNvdXJjZXMuZmluZChmaWxlRGVzY3JpcHRvcik7CisgICAgcmVm
KCk7CisgICAgbV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gV29ya1F1ZXVl
OjpTb2NrZXRFdmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rpb25dKEdJT0NvbmRp
dGlvbiBjb25kaXRpb24pIHsKKyAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fSFVQIHx8IGNv
bmRpdGlvbiAmIEdfSU9fRVJSIHx8IGNvbmRpdGlvbiAmIEdfSU9fTlZBTCkgeworICAgICAgICAg
ICAgY2xvc2VGdW5jdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6
U3RvcDsKKyAgICAgICAgfQogCi0gICAgaWYgKGl0ICE9IG1fZXZlbnRTb3VyY2VzLmVuZCgpKSB7
Ci0gICAgICAgIFZlY3RvcjxTb2NrZXRFdmVudFNvdXJjZSo+IHNvdXJjZXMgPSBpdC0+dmFsdWU7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VzLnNpemUoKTsgaSsrKQot
ICAgICAgICAgICAgc291cmNlc1tpXS0+Y2FuY2VsKCk7CisgICAgICAgIGlmIChjb25kaXRpb24g
JiBHX0lPX0lOKSB7CisgICAgICAgICAgICBmdW5jdGlvbigpOworICAgICAgICAgICAgcmV0dXJu
IEdNYWluTG9vcFNvdXJjZTo6Q29udGludWU7CisgICAgICAgIH0KIAotICAgICAgICBtX2V2ZW50
U291cmNlcy5yZW1vdmUoaXQpOwotICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OlN0b3A7CisgICAgICAgIH0sIHNvY2tl
dC5nZXQoKSwgR19JT19JTiwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwKKyAgICAgICAg
bV9ldmVudENvbnRleHQuZ2V0KCkpOwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hPblNv
dXJjZShHU291cmNlKiBkaXNwYXRjaFNvdXJjZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5j
dGlvbiwgR1NvdXJjZUZ1bmMgc291cmNlQ2FsbGJhY2spCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdp
c3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpCiB7Ci0gICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNr
KGRpc3BhdGNoU291cmNlLCBzb3VyY2VDYWxsYmFjaywgbmV3IEV2ZW50U291cmNlKHN0ZDo6bW92
ZShmdW5jdGlvbiksIHRoaXMpLAotICAgICAgICByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90
aWZ5PigmV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6ZGVsZXRlRXZlbnRTb3VyY2UpKTsKLQotICAg
IGdfc291cmNlX2F0dGFjaChkaXNwYXRjaFNvdXJjZSwgbV9ldmVudENvbnRleHQuZ2V0KCkpOwor
ICAgIG1fc29ja2V0RXZlbnRTb3VyY2UuY2FuY2VsKCk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpk
aXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQogewotICAgIEdSZWZQdHI8
R1NvdXJjZT4gZGlzcGF0Y2hTb3VyY2UgPSBhZG9wdEdSZWYoZ19pZGxlX3NvdXJjZV9uZXcoKSk7
Ci0gICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KGRpc3BhdGNoU291cmNlLmdldCgpLCBHX1BSSU9S
SVRZX0RFRkFVTFQpOwotICAgIGRpc3BhdGNoT25Tb3VyY2UoZGlzcGF0Y2hTb3VyY2UuZ2V0KCks
IHN0ZDo6bW92ZShmdW5jdGlvbiksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1
bmM+KCZXb3JrUXVldWU6OkV2ZW50U291cmNlOjpwZXJmb3JtV29ya09uY2UpKTsKKyAgICByZWYo
KTsKKyAgICBHTWFpbkxvb3BTb3VyY2U6OmNyZWF0ZUFuZERlbGV0ZU9uRGVzdHJveSgpLnNjaGVk
dWxlKCJbV2ViS2l0XSBXb3JrUXVldWU6OkV2ZW50U291cmNlOjpwZXJmb3JtV29ya09uY2UiLCBz
dGQ6Om1vdmUoZnVuY3Rpb24pLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFt0aGlzXSB7
IGRlcmVmKCk7IH0sIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKIH0KIAogdm9pZCBXb3JrUXVldWU6
OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQogewotICAgIEdSZWZQdHI8R1NvdXJjZT4gZGlzcGF0
Y2hTb3VyY2UgPSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoCi0gICAgICAgIHN0YXRp
Y19jYXN0PGd1aW50PihzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzPihkdXJhdGlvbikuY291bnQoKSkpKTsKLSAgICBkaXNwYXRjaE9uU291cmNlKGRp
c3BhdGNoU291cmNlLmdldCgpLCBzdGQ6Om1vdmUoZnVuY3Rpb24pLAotICAgICAgICByZWludGVy
cHJldF9jYXN0PEdTb3VyY2VGdW5jPigmV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6cGVyZm9ybVdv
cmtPbmNlKSk7CisgICAgcmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpjcmVhdGVBbmREZWxl
dGVPbkRlc3Ryb3koKS5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIFdvcmtRdWV1ZTo6RXZl
bnRTb3VyY2U6OnBlcmZvcm1Xb3JrT25jZSIsIHN0ZDo6bW92ZShmdW5jdGlvbiksCisgICAgICAg
IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1
cmF0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULCBbdGhpc10geyBkZXJlZigpOyB9LCBtX2V2ZW50
Q29udGV4dC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IGExZjE5YmYuLmVjODFmYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNv
dXAuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oPgogI2luY2x1
ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQ5LDE0ICs1
MCwxMSBAQCBjbGFzcyBEb3dubG9hZENsaWVudCA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgRG93bmxvYWRDbGllbnQoRG93bmxvYWQqIGRvd25sb2FkKQogICAg
ICAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCi0gICAgICAgICwgbV9oYW5kbGVSZXNwb25zZUxh
dGVySUQoMCkKICAgICB7CiAgICAgfQogCiAgICAgfkRvd25sb2FkQ2xpZW50KCkKICAgICB7Ci0g
ICAgICAgIGlmIChtX2hhbmRsZVJlc3BvbnNlTGF0ZXJJRCkKLSAgICAgICAgICAgIGdfc291cmNl
X3JlbW92ZShtX2hhbmRsZVJlc3BvbnNlTGF0ZXJJRCk7CiAgICAgfQogCiAgICAgdm9pZCBkZWxl
dGVJbnRlcm1lZGlhdGVGaWxlSW5OZWVkZWQoKQpAQCAtMTE3LDggKzExNSw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiAgICAgewot
ICAgICAgICBpZiAobV9oYW5kbGVSZXNwb25zZUxhdGVySUQpIHsKLSAgICAgICAgICAgIGdfc291
cmNlX3JlbW92ZShtX2hhbmRsZVJlc3BvbnNlTGF0ZXJJRCk7CisgICAgICAgIGlmIChtX2hhbmRs
ZVJlc3BvbnNlTGF0ZXIuaXNTY2hlZHVsZWQoKSkgeworICAgICAgICAgICAgbV9oYW5kbGVSZXNw
b25zZUxhdGVyLmNhbmNlbCgpOwogICAgICAgICAgICAgaGFuZGxlUmVzcG9uc2UoKTsKICAgICAg
ICAgfQogCkBAIC0xNzcsMjYgKzE3NSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhbmRsZVJl
c3BvbnNlKCkKICAgICB7Ci0gICAgICAgIG1faGFuZGxlUmVzcG9uc2VMYXRlcklEID0gMDsKLSAg
ICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKDAsIG1fZGVsYXllZFJlc3BvbnNlKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgZ2Jvb2xlYW4gaGFuZGxlUmVzcG9uc2VMYXRlckNhbGxiYWNrKERvd25sb2Fk
Q2xpZW50KiBkb3dubG9hZENsaWVudCkKLSAgICB7Ci0gICAgICAgIGRvd25sb2FkQ2xpZW50LT5o
YW5kbGVSZXNwb25zZSgpOwotICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIGRpZFJlY2Vp
dmVSZXNwb25zZShudWxscHRyLCBtX2RlbGF5ZWRSZXNwb25zZSk7CiAgICAgfQogCiAgICAgdm9p
ZCBoYW5kbGVSZXNwb25zZUxhdGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVzcG9uc2UuaXNOdWxsKCkpOwotICAgICAgICBBU1NF
UlQoIW1faGFuZGxlUmVzcG9uc2VMYXRlcklEKTsKKyAgICAgICAgQVNTRVJUKCFtX2hhbmRsZVJl
c3BvbnNlTGF0ZXIuaXNTY2hlZHVsZWQoKSk7CiAKICAgICAgICAgbV9kZWxheWVkUmVzcG9uc2Ug
PSByZXNwb25zZTsKIAogICAgICAgICAvLyBDYWxsIGRpZFJlY2VpdmVSZXNwb25zZSBpbiBhbiBp
ZGxlIHRvIG1ha2Ugc3VyZSB0aGUgZG93bmxvYWQgaXMgYWRkZWQKICAgICAgICAgLy8gdG8gdGhl
IERvd25sb2FkTWFuYWdlciBkb3dubG9hZHMgbWFwLgotICAgICAgICBtX2hhbmRsZVJlc3BvbnNl
TGF0ZXJJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIHJlaW50ZXJwcmV0
X2Nhc3Q8R1NvdXJjZUZ1bmM+KGhhbmRsZVJlc3BvbnNlTGF0ZXJDYWxsYmFjayksIHRoaXMsIDAp
OworICAgICAgICBtX2hhbmRsZVJlc3BvbnNlTGF0ZXIuc2NoZWR1bGUoIltXZWJLaXRdIERvd25s
b2FkSGFuZGxlUmVzcG9uc2VMYXRlciIsIHN0ZDo6YmluZCgmRG93bmxvYWRDbGllbnQ6OmhhbmRs
ZVJlc3BvbnNlLCB0aGlzKSk7CiAgICAgfQogCiAgICAgRG93bmxvYWQqIG1fZG93bmxvYWQ7CkBA
IC0yMDUsNyArMTk2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uVVJJOwog
ICAgIEdSZWZQdHI8R0ZpbGU+IG1faW50ZXJtZWRpYXRlRmlsZTsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fZGVsYXllZFJlc3BvbnNlOwotICAgIHVuc2lnbmVkIG1faGFuZGxlUmVzcG9uc2VMYXRl
cklEOworICAgIEdNYWluTG9vcFNvdXJjZSBtX2hhbmRsZVJlc3BvbnNlTGF0ZXI7CiB9OwogCiB2
b2lkIERvd25sb2FkOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDcyZTQ1MTQuLjRkNjM0
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVn
aW5JbmZvQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0
ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCkBAIC00NSw3ICs0NSw2IEBAIFBsdWdpbkluZm9DYWNoZSYg
UGx1Z2luSW5mb0NhY2hlOjpzaGFyZWQoKQogUGx1Z2luSW5mb0NhY2hlOjpQbHVnaW5JbmZvQ2Fj
aGUoKQogICAgIDogbV9jYWNoZUZpbGUoZ19rZXlfZmlsZV9uZXcoKSkKICAgICAsIG1fY2FjaGVQ
YXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIs
ICJwbHVnaW5zIiwgbnVsbHB0cikpCi0gICAgLCBtX3NhdmVUb0ZpbGVJZGxlSWQoMCkKIHsKICAg
ICBnX2tleV9maWxlX2xvYWRfZnJvbV9maWxlKG1fY2FjaGVGaWxlLmdldCgpLCBtX2NhY2hlUGF0
aC5nZXQoKSwgR19LRVlfRklMRV9OT05FLCBudWxscHRyKTsKIApAQCAtNjMsMjIgKzYyLDE1IEBA
IFBsdWdpbkluZm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKCkKIAogUGx1Z2luSW5mb0NhY2hlOjp+
UGx1Z2luSW5mb0NhY2hlKCkKIHsKLSAgICBpZiAobV9zYXZlVG9GaWxlSWRsZUlkKSB7Ci0gICAg
ICAgIGdfc291cmNlX3JlbW92ZShtX3NhdmVUb0ZpbGVJZGxlSWQpOworICAgIGlmIChtX3NhdmVU
b0ZpbGVJZGxlLmlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgbV9zYXZlVG9GaWxlSWRsZS5jYW5j
ZWwoKTsKICAgICAgICAgc2F2ZVRvRmlsZSgpOwogICAgIH0KIH0KIAotZ2Jvb2xlYW4gUGx1Z2lu
SW5mb0NhY2hlOjpzYXZlVG9GaWxlSWRsZUNhbGxiYWNrKFBsdWdpbkluZm9DYWNoZSogY2FjaGUp
Ci17Ci0gICAgY2FjaGUtPnNhdmVUb0ZpbGUoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHZv
aWQgUGx1Z2luSW5mb0NhY2hlOjpzYXZlVG9GaWxlKCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKLSAgICBtX3NhdmVUb0ZpbGVJZGxlSWQgPSAwOwog
CiAgICAgZ3NpemUgZGF0YUxlbmd0aDsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRhdGEoZ19rZXlf
ZmlsZV90b19kYXRhKG1fY2FjaGVGaWxlLmdldCgpLCAmZGF0YUxlbmd0aCwgbnVsbHB0cikpOwpA
QCAtMTMzLDEwICsxMjUsMTAgQEAgdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0ZVBsdWdpbklu
Zm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2QKICAgICAvLyBTYXZl
IHRoZSBjYWNoZSBmaWxlIGluIGFuIGlkbGUgdG8gbWFrZSBzdXJlIGl0IGhhcHBlbnMgaW4gdGhl
IG1haW4gdGhyZWFkIGFuZAogICAgIC8vIGl0J3MgZG9uZSBvbmx5IG9uY2Ugd2hlbiB0aGlzIGlz
IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiBhIHZlcnkgc2hvcnQgdGltZS4KICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKLSAgICBpZiAobV9zYXZlVG9GaWxl
SWRsZUlkKQorICAgIGlmIChtX3NhdmVUb0ZpbGVJZGxlLmlzU2NoZWR1bGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fc2F2ZVRvRmlsZUlkbGVJZCA9IGdfaWRsZV9hZGQocmVpbnRlcnBy
ZXRfY2FzdDxHU291cmNlRnVuYz4oUGx1Z2luSW5mb0NhY2hlOjpzYXZlVG9GaWxlSWRsZUNhbGxi
YWNrKSwgdGhpcyk7CisgICAgbV9zYXZlVG9GaWxlSWRsZS5zY2hlZHVsZSgiW1dlYktpdF0gUGx1
Z2luSW5mb0NhY2hlOjpzYXZlVG9GaWxlIiwgc3RkOjpiaW5kKCZQbHVnaW5JbmZvQ2FjaGU6OnNh
dmVUb0ZpbGUsIHRoaXMpLCBHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5oCmluZGV4IDMyNzJkYzAuLmRmMmIyOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0Nh
Y2hlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCiAj
aW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDExICs1MCwxMCBAQCBw
cml2YXRlOgogICAgIH5QbHVnaW5JbmZvQ2FjaGUoKTsKIAogICAgIHZvaWQgc2F2ZVRvRmlsZSgp
OwotICAgIHN0YXRpYyBnYm9vbGVhbiBzYXZlVG9GaWxlSWRsZUNhbGxiYWNrKFBsdWdpbkluZm9D
YWNoZSopOwogCiAgICAgR1VuaXF1ZVB0cjxHS2V5RmlsZT4gbV9jYWNoZUZpbGU7CiAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBtX2NhY2hlUGF0aDsKLSAgICB1bnNpZ25lZCBtX3NhdmVUb0ZpbGVJZGxl
SWQ7CisgICAgR01haW5Mb29wU291cmNlIG1fc2F2ZVRvRmlsZUlkbGU7CiAgICAgc3RkOjptdXRl
eCBtX211dGV4OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKaW5kZXggMzRmMGMxMi4uNDBjNGU1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXll
clRyZWVIb3N0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCkBAIC03NCw3ICs3NCw2IEBAIExheWVyVHJlZUhvc3RH
dGs6OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSogd2ViUGFnZSkKICAgICAsIG1fbm90aWZ5QWZ0
ZXJTY2hlZHVsZWRMYXllckZsdXNoKGZhbHNlKQogICAgICwgbV9sYXN0Rmx1c2hUaW1lKDApCiAg
ICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQotICAgICwgbV9sYXllckZs
dXNoVGltZXJDYWxsYmFja0lkKDApCiB7CiB9CiAKQEAgLTI5MiwyNCArMjkxLDE1IEBAIHZvaWQg
TGF5ZXJUcmVlSG9zdEd0azo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyLCBHcmFwaGljCiAgICAgfQogfQogCi1nYm9vbGVhbiBMYXllclRyZWVIb3N0R3Rr
OjpsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrKExheWVyVHJlZUhvc3RHdGsqIGxheWVyVHJl
ZUhvc3QpCi17Ci0gICAgbGF5ZXJUcmVlSG9zdC0+bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKLSAg
ICByZXR1cm4gRkFMU0U7Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6bGF5ZXJGbHVzaFRp
bWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQpOwot
ICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9IDA7Ci0KICAgICBmbHVzaEFuZFJlbmRl
ckxheWVycygpOwogCi0gICAgaWYgKHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdl
dCgpKS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSAmJiAhbV9sYXll
ckZsdXNoVGltZXJDYWxsYmFja0lkKSB7CisgICAgaWYgKCFtX2xheWVyRmx1c2hUaW1lckNhbGxi
YWNrLmlzU2NoZWR1bGVkKCkgJiYgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0
KCkpLT5kZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpKSB7CiAgICAgICAg
IGNvbnN0IGRvdWJsZSB0YXJnZXRGUFMgPSA2MDsKICAgICAgICAgZG91YmxlIG5leHRGbHVzaCA9
IHN0ZDo6bWF4KCgxIC8gdGFyZ2V0RlBTKSAtIChjdXJyZW50VGltZSgpIC0gbV9sYXN0Rmx1c2hU
aW1lKSwgMC4wKTsKLSAgICAgICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkID0gZ190aW1l
b3V0X2FkZF9mdWxsKEdES19QUklPUklUWV9FVkVOVFMsIG5leHRGbHVzaCAqIDEwMDAuMCwgcmVp
bnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxsYmFjayks
IHRoaXMsIDApOwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX2xheWVyRmx1c2hU
aW1lckNhbGxiYWNrSWQsICJbV2ViS2l0XSBsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrIik7
CisgICAgICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2suc2NoZWR1bGVBZnRlckRlbGF5KCJb
V2ViS2l0XSBsYXllckZsdXNoVGltZXIiLCBzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6Omxh
eWVyRmx1c2hUaW1lckZpcmVkLCB0aGlzKSwKKyAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bjxkb3VibGU+KG5leHRGbHVzaCkpLCBHREtfUFJJT1JJVFlfRVZFTlRTKTsKICAgICB9CiB9CiAK
QEAgLTQwOCwxMCArMzk4LDggQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzY2hlZHVsZUxheWVy
Rmx1c2goKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSB1c2UgYSBHTGliIHRpbWVyIGJl
Y2F1c2Ugb3RoZXJ3aXNlIEdUSysgZXZlbnQgaGFuZGxpbmcgZHVyaW5nIGRyYWdnaW5nIGNhbiBz
dGFydmUgV2ViQ29yZSB0aW1lcnMsIHdoaWNoIGhhdmUgYSBsb3dlciBwcmlvcml0eS4KLSAgICBp
ZiAoIW1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCkgewotICAgICAgICBtX2xheWVyRmx1c2hU
aW1lckNhbGxiYWNrSWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR0RLX1BSSU9SSVRZX0VWRU5UUywg
MCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxs
YmFjayksIHRoaXMsIDApOwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX2xheWVy
Rmx1c2hUaW1lckNhbGxiYWNrSWQsICJbV2ViS2l0XSBsYXllckZsdXNoVGltZXJGaXJlZENhbGxi
YWNrIik7Ci0gICAgfQorICAgIGlmICghbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5pc1NjaGVk
dWxlZCgpKQorICAgICAgICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLnNjaGVkdWxlKCJbV2Vi
S2l0XSBsYXllckZsdXNoVGltZXIiLCBzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6OmxheWVy
Rmx1c2hUaW1lckZpcmVkLCB0aGlzKSwgR0RLX1BSSU9SSVRZX0VWRU5UUyk7CiB9CiAKIHZvaWQg
TGF5ZXJUcmVlSG9zdEd0azo6c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wgbGF5
ZXJGbHVzaGluZ0VuYWJsZWQpCkBAIC00MzYsMTEgKzQyNCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9z
dEd0azo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIAogdm9pZCBMYXllclRy
ZWVIb3N0R3RrOjpjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpCiB7Ci0gICAgaWYgKCFtX2xheWVy
Rmx1c2hUaW1lckNhbGxiYWNrSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfc291cmNlX3Jl
bW92ZShtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQpOwotICAgIG1fbGF5ZXJGbHVzaFRpbWVy
Q2FsbGJhY2tJZCA9IDA7CisgICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5jYW5jZWwoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDFjYmNmM2Uu
LjY1MzI3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29w
U291cmNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC05Miw3ICs5Myw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogCiAgICAgdm9pZCBsYXll
ckZsdXNoVGltZXJGaXJlZCgpOwotICAgIHN0YXRpYyBnYm9vbGVhbiBsYXllckZsdXNoVGltZXJG
aXJlZENhbGxiYWNrKExheWVyVHJlZUhvc3RHdGsqKTsKIAogICAgIFdlYkNvcmU6OkdMQ29udGV4
dCogZ2xDb250ZXh0KCk7CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIE93blB0
cjxXZWJDb3JlOjpHTENvbnRleHQ+IG1fY29udGV4dDsKICAgICBkb3VibGUgbV9sYXN0Rmx1c2hU
aW1lOwogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7Ci0gICAgdW5zaWdu
ZWQgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkOworICAgIEdNYWluTG9vcFNvdXJjZSBtX2xh
eWVyRmx1c2hUaW1lckNhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232121</attachid>
            <date>2014-05-27 03:25:01 -0700</date>
            <delta_ts>2014-05-28 06:51:32 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-gmain-loop-source.diff</filename>
            <type>text/plain</type>
            <size>19417</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkNGI5NzY1Li40YjUxNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTQtMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBHTWFpbkxvb3BTb3VyY2UgZm9yIGlkbGUgYW5kIHRpbWVv
dXQgc291cmNlcyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAwODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsYXRmb3JtL1dvcmtRdWV1ZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L2d0ay9Xb3JrUXVldWVHdGsuY3BwOgorICAgICAgICAoV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tl
dEV2ZW50SGFuZGxlcik6IFN0b3AgcHJldGVuZGluZyBpdCdzCisgICAgICAgIHBvc3NpYmxlIHRv
IHJlZ2lzdGVyIGEgc29ja2V0IGV2ZW50IGhhbmRsZXIgZm9yIG1vcmUgdGhhbiBvbmUKKyAgICAg
ICAgZGVzY3JpcHRvci4KKyAgICAgICAgKFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9h
ZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojp+RG93bmxvYWRDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2VMYXRlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpbkluZm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luSW5mb0NhY2hlOjp+UGx1Z2luSW5mb0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luSW5mb0NhY2hlOjpzYXZlVG9GaWxlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5m
b0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9n
dGsvUGx1Z2luSW5mb0NhY2hlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
TGF5ZXJUcmVlSG9zdEd0ayk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6Omxh
eWVyRmx1c2hUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
c2NoZWR1bGVMYXllckZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oOgorCiAyMDE0LTA1LTI2ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFt3azJdIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlIGZyb250IGJ1ZmZlcnMgc2hvdWxkIGJlIHB1cmdlYWJsZSB3aGVuIHVucGFyZW50ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKaW5kZXggYjEzZWQxOC4uZjhkN2E1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKQEAgLTQ1LDggKzQ1LDggQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KLXR5cGVkZWYgZ2Jvb2xlYW4gKCpH
U291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOwogI2VsaWYgUExBVEZPUk0oRUZMKQogI2luY2x1
ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KICNlbmRpZgpAQCAtNzksMTkgKzc5LDE0IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAgICBkaXNwYXRj
aF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBjbGFz
cyBFdmVudFNvdXJjZTsKLSAgICBjbGFzcyBTb2NrZXRFdmVudFNvdXJjZTsKLQogICAgIHN0YXRp
YyB2b2lkIHN0YXJ0V29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOwogICAgIHZvaWQgd29ya1F1
ZXVlVGhyZWFkQm9keSgpOwotICAgIHZvaWQgZGlzcGF0Y2hPblNvdXJjZShHU291cmNlKiwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiwgR1NvdXJjZUZ1bmMpOwogCiAgICAgVGhyZWFkSWRlbnRpZmll
ciBtX3dvcmtRdWV1ZVRocmVhZDsKICAgICBHUmVmUHRyPEdNYWluQ29udGV4dD4gbV9ldmVudENv
bnRleHQ7CiAgICAgTXV0ZXggbV9ldmVudExvb3BMb2NrOwogICAgIEdSZWZQdHI8R01haW5Mb29w
PiBtX2V2ZW50TG9vcDsKLSAgICBNdXRleCBtX2V2ZW50U291cmNlc0xvY2s7Ci0gICAgSGFzaE1h
cDxpbnQsIFZlY3RvcjxTb2NrZXRFdmVudFNvdXJjZSo+PiBtX2V2ZW50U291cmNlczsKKyAgICBH
TWFpbkxvb3BTb3VyY2UgbV9zb2NrZXRFdmVudFNvdXJjZTsKICNlbGlmIFBMQVRGT1JNKEVGTCkK
ICAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCmluZGV4IGFlMDNjNDcu
LjI0YmU4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVl
dWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsu
Y3BwCkBAIC0yOSw5OCArMjksNyBAQAogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogCiAjaW5jbHVk
ZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+Ci0KLS8vIFdvcmtRdWV1ZTo6RXZlbnRTb3VyY2UKLWNsYXNzIFdvcmtRdWV1ZTo6
RXZlbnRTb3VyY2UgewotcHVibGljOgotICAgIEV2ZW50U291cmNlKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBmdW5jdGlvbiwgV29ya1F1ZXVlKiB3b3JrUXVldWUpCi0gICAgICAgIDogbV9mdW5jdGlv
bihzdGQ6Om1vdmUoZnVuY3Rpb24pKQotICAgICAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCh3b3JrUXVldWUpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
fkV2ZW50U291cmNlKCkgeyB9Ci0KLSAgICB2b2lkIHBlcmZvcm1Xb3JrKCkKLSAgICB7Ci0gICAg
ICAgIG1fZnVuY3Rpb24oKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgZ2Jvb2xlYW4gcGVyZm9ybVdv
cmtPbmNlKEV2ZW50U291cmNlKiBldmVudFNvdXJjZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChl
dmVudFNvdXJjZSk7Ci0gICAgICAgIGV2ZW50U291cmNlLT5wZXJmb3JtV29yaygpOwotICAgICAg
ICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgZGVsZXRlRXZlbnRTb3Vy
Y2UoRXZlbnRTb3VyY2UqIGV2ZW50U291cmNlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGV2ZW50
U291cmNlKTsKLSAgICAgICAgZGVsZXRlIGV2ZW50U291cmNlOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247Ci0gICAgUmVmUHRyPFdvcmtR
dWV1ZT4gbV93b3JrUXVldWU7Ci19OwotCi1jbGFzcyBXb3JrUXVldWU6OlNvY2tldEV2ZW50U291
cmNlIDogcHVibGljIFdvcmtRdWV1ZTo6RXZlbnRTb3VyY2UgewotcHVibGljOgotICAgIFNvY2tl
dEV2ZW50U291cmNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24sIFdvcmtRdWV1ZSog
d29ya1F1ZXVlLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IGNsb3NlRnVuY3Rpb24pCi0gICAgICAgIDogRXZlbnRTb3VyY2Uoc3RkOjptb3ZlKGZ1bmN0
aW9uKSwgd29ya1F1ZXVlKQotICAgICAgICAsIG1fY2FuY2VsbGFibGUoY2FuY2VsbGFibGUpCi0g
ICAgICAgICwgbV9jbG9zZUZ1bmN0aW9uKHN0ZDo6bW92ZShjbG9zZUZ1bmN0aW9uKSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChjYW5jZWxsYWJsZSk7Ci0gICAgfQotCi0gICAgdm9pZCBjYW5jZWwo
KQotICAgIHsKLSAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwobV9jYW5jZWxsYWJsZSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBkaWRDbG9zZSgpCi0gICAgewotICAgICAgICBtX2Nsb3NlRnVuY3Rp
b24oKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQ2FuY2VsbGVkKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBnX2NhbmNlbGxhYmxlX2lzX2NhbmNlbGxlZChtX2NhbmNlbGxhYmxlKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgZ2Jvb2xlYW4gZXZlbnRDYWxsYmFjayhHU29ja2V0KiwgR0lPQ29u
ZGl0aW9uIGNvbmRpdGlvbiwgU29ja2V0RXZlbnRTb3VyY2UqIGV2ZW50U291cmNlKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGV2ZW50U291cmNlKTsKLQotICAgICAgICBpZiAoZXZlbnRTb3VyY2Ut
PmlzQ2FuY2VsbGVkKCkpIHsKLSAgICAgICAgICAgIC8vIEV2ZW50U291cmNlIGhhcyBiZWVuIGNh
bmNlbGxlZCwgcmV0dXJuIEZBTFNFIHRvIGRlc3Ryb3kgdGhlIHNvdXJjZS4KLSAgICAgICAgICAg
IHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lP
X0hVUCB8fCBjb25kaXRpb24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05WQUwpIHsK
LSAgICAgICAgICAgIGV2ZW50U291cmNlLT5kaWRDbG9zZSgpOwotICAgICAgICAgICAgcmV0dXJu
IEZBTFNFOwotICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fSU4pIHsK
LSAgICAgICAgICAgIGV2ZW50U291cmNlLT5wZXJmb3JtV29yaygpOwotICAgICAgICAgICAgcmV0
dXJuIFRSVUU7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBHQ2FuY2VsbGFibGUq
IG1fY2FuY2VsbGFibGU7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX2Nsb3NlRnVuY3Rp
b247Ci19OwotCi0vLyBXb3JrUXVldWUKIHN0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRp
b1RocmVhZE5hbWVMaW1pdCA9IDMxOwogCiB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUpCkBAIC0xNzIsNjkgKzgxLDQwIEBAIHZvaWQgV29ya1F1ZXVl
Ojp3b3JrUXVldWVUaHJlYWRCb2R5KCkKIHZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tldEV2
ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVu
Y3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2xvc2VGdW5jdGlvbikKIHsKICAgICBHUmVm
UHRyPEdTb2NrZXQ+IHNvY2tldCA9IGFkb3B0R1JlZihnX3NvY2tldF9uZXdfZnJvbV9mZChmaWxl
RGVzY3JpcHRvciwgMCkpOwotICAgIEFTU0VSVChzb2NrZXQpOwotICAgIEdSZWZQdHI8R0NhbmNl
bGxhYmxlPiBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKLSAg
ICBHUmVmUHRyPEdTb3VyY2U+IGRpc3BhdGNoU291cmNlID0gYWRvcHRHUmVmKGdfc29ja2V0X2Ny
ZWF0ZV9zb3VyY2Uoc29ja2V0LmdldCgpLCBHX0lPX0lOLCBjYW5jZWxsYWJsZS5nZXQoKSkpOwot
ICAgIEFTU0VSVChkaXNwYXRjaFNvdXJjZSk7Ci0gICAgU29ja2V0RXZlbnRTb3VyY2UqIGV2ZW50
U291cmNlID0gbmV3IFNvY2tldEV2ZW50U291cmNlKHN0ZDo6bW92ZShmdW5jdGlvbiksIHRoaXMs
Ci0gICAgICAgIGNhbmNlbGxhYmxlLmdldCgpLCBzdGQ6Om1vdmUoY2xvc2VGdW5jdGlvbikpOwot
Ci0gICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKGRpc3BhdGNoU291cmNlLmdldCgpLCByZWludGVy
cHJldF9jYXN0PEdTb3VyY2VGdW5jPigmV29ya1F1ZXVlOjpTb2NrZXRFdmVudFNvdXJjZTo6ZXZl
bnRDYWxsYmFjayksCi0gICAgICAgIGV2ZW50U291cmNlLCByZWludGVycHJldF9jYXN0PEdEZXN0
cm95Tm90aWZ5PigmV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6ZGVsZXRlRXZlbnRTb3VyY2UpKTsK
LQotICAgIC8vIFNldCB1cCB0aGUgZXZlbnQgc291cmNlcyB1bmRlciB0aGUgbXV0ZXggc2luY2Ug
dGhpcyBpcyBzaGFyZWQgYWNyb3NzIG11bHRpcGxlIHRocmVhZHMuCi0gICAgewotICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9ldmVudFNvdXJjZXNMb2NrKTsKLSAgICAgICAgVmVjdG9yPFNv
Y2tldEV2ZW50U291cmNlKj4gc291cmNlczsKLSAgICAgICAgYXV0byBpdCA9IG1fZXZlbnRTb3Vy
Y2VzLmZpbmQoZmlsZURlc2NyaXB0b3IpOwotICAgICAgICBpZiAoaXQgIT0gbV9ldmVudFNvdXJj
ZXMuZW5kKCkpCi0gICAgICAgICAgICBzb3VyY2VzID0gaXQtPnZhbHVlOwotCi0gICAgICAgIHNv
dXJjZXMuYXBwZW5kKGV2ZW50U291cmNlKTsKLSAgICAgICAgbV9ldmVudFNvdXJjZXMuc2V0KGZp
bGVEZXNjcmlwdG9yLCBzb3VyY2VzKTsKLSAgICB9Ci0KLSAgICBnX3NvdXJjZV9hdHRhY2goZGlz
cGF0Y2hTb3VyY2UuZ2V0KCksIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKLX0KLQotdm9pZCBXb3Jr
UXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yKQot
ewotICAgIEFTU0VSVChmaWxlRGVzY3JpcHRvcik7Ci0KLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9ldmVudFNvdXJjZXNMb2NrKTsKLQotICAgIEFTU0VSVChtX2V2ZW50U291cmNlcy5jb250YWlu
cyhmaWxlRGVzY3JpcHRvcikpOwotICAgIGF1dG8gaXQgPSBtX2V2ZW50U291cmNlcy5maW5kKGZp
bGVEZXNjcmlwdG9yKTsKKyAgICByZWYoKTsKKyAgICBtX3NvY2tldEV2ZW50U291cmNlLnNjaGVk
dWxlKCJbV2ViS2l0XSBXb3JrUXVldWU6OlNvY2tldEV2ZW50SGFuZGxlciIsIFtmdW5jdGlvbiwg
Y2xvc2VGdW5jdGlvbl0oR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgeworICAgICAgICBpZiAoY29u
ZGl0aW9uICYgR19JT19IVVAgfHwgY29uZGl0aW9uICYgR19JT19FUlIgfHwgY29uZGl0aW9uICYg
R19JT19OVkFMKSB7CisgICAgICAgICAgICBjbG9zZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICBy
ZXR1cm4gR01haW5Mb29wU291cmNlOjpTdG9wOworICAgICAgICB9CiAKLSAgICBpZiAoaXQgIT0g
bV9ldmVudFNvdXJjZXMuZW5kKCkpIHsKLSAgICAgICAgVmVjdG9yPFNvY2tldEV2ZW50U291cmNl
Kj4gc291cmNlcyA9IGl0LT52YWx1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBzb3VyY2VzW2ldLT5jYW5jZWwoKTsK
KyAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fSU4pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9u
KCk7CisgICAgICAgICAgICByZXR1cm4gR01haW5Mb29wU291cmNlOjpDb250aW51ZTsKKyAgICAg
ICAgfQogCi0gICAgICAgIG1fZXZlbnRTb3VyY2VzLnJlbW92ZShpdCk7Ci0gICAgfQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6
U3RvcDsKKyAgICAgICAgfSwgc29ja2V0LmdldCgpLCBHX0lPX0lOLAorICAgICAgICBbdGhpc10g
eyBkZXJlZigpOyB9LAorICAgICAgICBtX2V2ZW50Q29udGV4dC5nZXQoKSk7CiB9CiAKLXZvaWQg
V29ya1F1ZXVlOjpkaXNwYXRjaE9uU291cmNlKEdTb3VyY2UqIGRpc3BhdGNoU291cmNlLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBHU291cmNlRnVuYyBzb3VyY2VDYWxsYmFjaykK
K3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCkKIHsKLSAg
ICBnX3NvdXJjZV9zZXRfY2FsbGJhY2soZGlzcGF0Y2hTb3VyY2UsIHNvdXJjZUNhbGxiYWNrLCBu
ZXcgRXZlbnRTb3VyY2Uoc3RkOjptb3ZlKGZ1bmN0aW9uKSwgdGhpcyksCi0gICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KCZXb3JrUXVldWU6OkV2ZW50U291cmNlOjpkZWxl
dGVFdmVudFNvdXJjZSkpOwotCi0gICAgZ19zb3VyY2VfYXR0YWNoKGRpc3BhdGNoU291cmNlLCBt
X2V2ZW50Q29udGV4dC5nZXQoKSk7CisgICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsK
IH0KIAogdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVu
Y3Rpb24pCiB7Ci0gICAgR1JlZlB0cjxHU291cmNlPiBkaXNwYXRjaFNvdXJjZSA9IGFkb3B0R1Jl
ZihnX2lkbGVfc291cmNlX25ldygpKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkoZGlzcGF0
Y2hTb3VyY2UuZ2V0KCksIEdfUFJJT1JJVFlfREVGQVVMVCk7Ci0gICAgZGlzcGF0Y2hPblNvdXJj
ZShkaXNwYXRjaFNvdXJjZS5nZXQoKSwgc3RkOjptb3ZlKGZ1bmN0aW9uKSwKLSAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oJldvcmtRdWV1ZTo6RXZlbnRTb3VyY2U6OnBlcmZv
cm1Xb3JrT25jZSkpOworICAgIHJlZigpOworICAgIEdNYWluTG9vcFNvdXJjZTo6Y3JlYXRlQW5k
RGVsZXRlT25EZXN0cm95KCkuc2NoZWR1bGUoIltXZWJLaXRdIFdvcmtRdWV1ZTo6RXZlbnRTb3Vy
Y2U6OnBlcmZvcm1Xb3JrT25jZSIsIHN0ZDo6bW92ZShmdW5jdGlvbiksIEdfUFJJT1JJVFlfREVG
QVVMVCwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkp
OwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCiB7Ci0gICAg
R1JlZlB0cjxHU291cmNlPiBkaXNwYXRjaFNvdXJjZSA9IGFkb3B0R1JlZihnX3RpbWVvdXRfc291
cmNlX25ldygKLSAgICAgICAgc3RhdGljX2Nhc3Q8Z3VpbnQ+KHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKS5jb3VudCgpKSkpOwot
ICAgIGRpc3BhdGNoT25Tb3VyY2UoZGlzcGF0Y2hTb3VyY2UuZ2V0KCksIHN0ZDo6bW92ZShmdW5j
dGlvbiksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KCZXb3JrUXVldWU6
OkV2ZW50U291cmNlOjpwZXJmb3JtV29ya09uY2UpKTsKKyAgICByZWYoKTsKKyAgICBHTWFpbkxv
b3BTb3VyY2U6OmNyZWF0ZUFuZERlbGV0ZU9uRGVzdHJveSgpLnNjaGVkdWxlQWZ0ZXJEZWxheSgi
W1dlYktpdF0gV29ya1F1ZXVlOjpFdmVudFNvdXJjZTo6cGVyZm9ybVdvcmtPbmNlIiwgc3RkOjpt
b3ZlKGZ1bmN0aW9uKSwKKyAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcz4oZHVyYXRpb24pLCBHX1BSSU9SSVRZX0RFRkFVTFQsIFt0aGlz
XSB7IGRlcmVmKCk7IH0sIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXgg
YTFmMTliZi4uZWM4MWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgpAQCAtNDksMTQgKzUwLDExIEBAIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVi
bGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBEb3dubG9hZENsaWVudChE
b3dubG9hZCogZG93bmxvYWQpCiAgICAgICAgIDogbV9kb3dubG9hZChkb3dubG9hZCkKLSAgICAg
ICAgLCBtX2hhbmRsZVJlc3BvbnNlTGF0ZXJJRCgwKQogICAgIHsKICAgICB9CiAKICAgICB+RG93
bmxvYWRDbGllbnQoKQogICAgIHsKLSAgICAgICAgaWYgKG1faGFuZGxlUmVzcG9uc2VMYXRlcklE
KQotICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faGFuZGxlUmVzcG9uc2VMYXRlcklEKTsK
ICAgICB9CiAKICAgICB2b2lkIGRlbGV0ZUludGVybWVkaWF0ZUZpbGVJbk5lZWRlZCgpCkBAIC0x
MTcsOCArMTE1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IC8qZW5jb2Rl
ZERhdGFMZW5ndGgqLykKICAgICB7Ci0gICAgICAgIGlmIChtX2hhbmRsZVJlc3BvbnNlTGF0ZXJJ
RCkgewotICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faGFuZGxlUmVzcG9uc2VMYXRlcklE
KTsKKyAgICAgICAgaWYgKG1faGFuZGxlUmVzcG9uc2VMYXRlci5pc1NjaGVkdWxlZCgpKSB7Cisg
ICAgICAgICAgICBtX2hhbmRsZVJlc3BvbnNlTGF0ZXIuY2FuY2VsKCk7CiAgICAgICAgICAgICBo
YW5kbGVSZXNwb25zZSgpOwogICAgICAgICB9CiAKQEAgLTE3NywyNiArMTc1LDE5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaGFuZGxlUmVzcG9uc2UoKQogICAgIHsKLSAgICAgICAgbV9oYW5kbGVS
ZXNwb25zZUxhdGVySUQgPSAwOwotICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoMCwgbV9kZWxh
eWVkUmVzcG9uc2UpOwotICAgIH0KLQotICAgIHN0YXRpYyBnYm9vbGVhbiBoYW5kbGVSZXNwb25z
ZUxhdGVyQ2FsbGJhY2soRG93bmxvYWRDbGllbnQqIGRvd25sb2FkQ2xpZW50KQotICAgIHsKLSAg
ICAgICAgZG93bmxvYWRDbGllbnQtPmhhbmRsZVJlc3BvbnNlKCk7Ci0gICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKG51bGxwdHIsIG1fZGVsYXllZFJlc3Bv
bnNlKTsKICAgICB9CiAKICAgICB2b2lkIGhhbmRsZVJlc3BvbnNlTGF0ZXIoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgewogICAgICAgICBBU1NFUlQobV9yZXNwb25zZS5p
c051bGwoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9oYW5kbGVSZXNwb25zZUxhdGVySUQpOworICAg
ICAgICBBU1NFUlQoIW1faGFuZGxlUmVzcG9uc2VMYXRlci5pc1NjaGVkdWxlZCgpKTsKIAogICAg
ICAgICBtX2RlbGF5ZWRSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAgICAgIC8vIENhbGwgZGlk
UmVjZWl2ZVJlc3BvbnNlIGluIGFuIGlkbGUgdG8gbWFrZSBzdXJlIHRoZSBkb3dubG9hZCBpcyBh
ZGRlZAogICAgICAgICAvLyB0byB0aGUgRG93bmxvYWRNYW5hZ2VyIGRvd25sb2FkcyBtYXAuCi0g
ICAgICAgIG1faGFuZGxlUmVzcG9uc2VMYXRlcklEID0gZ19pZGxlX2FkZF9mdWxsKEdfUFJJT1JJ
VFlfREVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oaGFuZGxlUmVzcG9uc2VM
YXRlckNhbGxiYWNrKSwgdGhpcywgMCk7CisgICAgICAgIG1faGFuZGxlUmVzcG9uc2VMYXRlci5z
Y2hlZHVsZSgiW1dlYktpdF0gRG93bmxvYWRIYW5kbGVSZXNwb25zZUxhdGVyIiwgc3RkOjpiaW5k
KCZEb3dubG9hZENsaWVudDo6aGFuZGxlUmVzcG9uc2UsIHRoaXMpKTsKICAgICB9CiAKICAgICBE
b3dubG9hZCogbV9kb3dubG9hZDsKQEAgLTIwNSw3ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIG1fZGVzdGluYXRpb25VUkk7CiAgICAgR1JlZlB0cjxHRmlsZT4gbV9pbnRlcm1lZGlhdGVG
aWxlOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9kZWxheWVkUmVzcG9uc2U7Ci0gICAgdW5zaWdu
ZWQgbV9oYW5kbGVSZXNwb25zZUxhdGVySUQ7CisgICAgR01haW5Mb29wU291cmNlIG1faGFuZGxl
UmVzcG9uc2VMYXRlcjsKIH07CiAKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5j
cHAKaW5kZXggNzMwOGEzYi4uMjM0MGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKQEAgLTQ1LDcgKzQ1
LDYgQEAgUGx1Z2luSW5mb0NhY2hlJiBQbHVnaW5JbmZvQ2FjaGU6OnNoYXJlZCgpCiBQbHVnaW5J
bmZvQ2FjaGU6OlBsdWdpbkluZm9DYWNoZSgpCiAgICAgOiBtX2NhY2hlRmlsZShnX2tleV9maWxl
X25ldygpKQogICAgICwgbV9jYWNoZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Nh
Y2hlX2RpcigpLCAid2Via2l0Z3RrIiwgInBsdWdpbnMiLCBudWxscHRyKSkKLSAgICAsIG1fc2F2
ZVRvRmlsZUlkbGVJZCgwKQogewogICAgIGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUobV9jYWNo
ZUZpbGUuZ2V0KCksIG1fY2FjaGVQYXRoLmdldCgpLCBHX0tFWV9GSUxFX05PTkUsIG51bGxwdHIp
OwogCkBAIC02MywyMiArNjIsMTUgQEAgUGx1Z2luSW5mb0NhY2hlOjpQbHVnaW5JbmZvQ2FjaGUo
KQogCiBQbHVnaW5JbmZvQ2FjaGU6On5QbHVnaW5JbmZvQ2FjaGUoKQogewotICAgIGlmIChtX3Nh
dmVUb0ZpbGVJZGxlSWQpIHsKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fc2F2ZVRvRmlsZUlk
bGVJZCk7CisgICAgaWYgKG1fc2F2ZVRvRmlsZUlkbGUuaXNTY2hlZHVsZWQoKSkgeworICAgICAg
ICBtX3NhdmVUb0ZpbGVJZGxlLmNhbmNlbCgpOwogICAgICAgICBzYXZlVG9GaWxlKCk7CiAgICAg
fQogfQogCi1nYm9vbGVhbiBQbHVnaW5JbmZvQ2FjaGU6OnNhdmVUb0ZpbGVJZGxlQ2FsbGJhY2so
UGx1Z2luSW5mb0NhY2hlKiBjYWNoZSkKLXsKLSAgICBjYWNoZS0+c2F2ZVRvRmlsZSgpOwotICAg
IHJldHVybiBGQUxTRTsKLX0KLQogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnNhdmVUb0ZpbGUoKQog
ewogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbXV0ZXgpOwotICAgIG1f
c2F2ZVRvRmlsZUlkbGVJZCA9IDA7CiAKICAgICBnc2l6ZSBkYXRhTGVuZ3RoOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZGF0YShnX2tleV9maWxlX3RvX2RhdGEobV9jYWNoZUZpbGUuZ2V0KCksICZk
YXRhTGVuZ3RoLCBudWxscHRyKSk7CkBAIC0xNDEsMTAgKzEzMywxMCBAQCB2b2lkIFBsdWdpbklu
Zm9DYWNoZTo6dXBkYXRlUGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0
IFBsdWdpbk1vZAogICAgIC8vIFNhdmUgdGhlIGNhY2hlIGZpbGUgaW4gYW4gaWRsZSB0byBtYWtl
IHN1cmUgaXQgaGFwcGVucyBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kCiAgICAgLy8gaXQncyBkb25l
IG9ubHkgb25jZSB3aGVuIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIGEgdmVyeSBz
aG9ydCB0aW1lLgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbXV0ZXgp
OwotICAgIGlmIChtX3NhdmVUb0ZpbGVJZGxlSWQpCisgICAgaWYgKG1fc2F2ZVRvRmlsZUlkbGUu
aXNTY2hlZHVsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zYXZlVG9GaWxlSWRsZUlk
ID0gZ19pZGxlX2FkZChyZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihQbHVnaW5JbmZvQ2Fj
aGU6OnNhdmVUb0ZpbGVJZGxlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX3NhdmVUb0ZpbGVJZGxl
LnNjaGVkdWxlKCJbV2ViS2l0XSBQbHVnaW5JbmZvQ2FjaGU6OnNhdmVUb0ZpbGUiLCBzdGQ6OmJp
bmQoJlBsdWdpbkluZm9DYWNoZTo6c2F2ZVRvRmlsZSwgdGhpcyksIEdfUFJJT1JJVFlfREVGQVVM
VF9JRExFKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmgKaW5kZXggMzI3
MmRjMC4uZGYyYjI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IlBsdWdpbk1vZHVsZUluZm8uaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDksMTEgKzUwLDEwIEBAIHByaXZhdGU6CiAgICAgflBsdWdpbkluZm9DYWNoZSgpOwog
CiAgICAgdm9pZCBzYXZlVG9GaWxlKCk7Ci0gICAgc3RhdGljIGdib29sZWFuIHNhdmVUb0ZpbGVJ
ZGxlQ2FsbGJhY2soUGx1Z2luSW5mb0NhY2hlKik7CiAKICAgICBHVW5pcXVlUHRyPEdLZXlGaWxl
PiBtX2NhY2hlRmlsZTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IG1fY2FjaGVQYXRoOwotICAgIHVu
c2lnbmVkIG1fc2F2ZVRvRmlsZUlkbGVJZDsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9zYXZlVG9G
aWxlSWRsZTsKICAgICBzdGQ6Om11dGV4IG1fbXV0ZXg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNw
cAppbmRleCBmZGQyNzk3Li45NmJkOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTc0LDcg
Kzc0LDYgQEAgTGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlKiB3ZWJQ
YWdlKQogICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2goZmFsc2UpCiAgICAg
LCBtX2xhc3RGbHVzaFRpbWUoMCkKICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVk
KHRydWUpCi0gICAgLCBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQoMCkKIHsKIH0KIApAQCAt
MjgyLDI0ICsyODEsMTUgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpwYWludENvbnRlbnRzKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWMKICAgICAvLyBGSVhNRTog
RHJhdyBwYWdlIG92ZXJsYXlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMxNDMzLgogfQogCi1nYm9vbGVhbiBMYXllclRyZWVIb3N0R3RrOjpsYXllckZsdXNoVGlt
ZXJGaXJlZENhbGxiYWNrKExheWVyVHJlZUhvc3RHdGsqIGxheWVyVHJlZUhvc3QpCi17Ci0gICAg
bGF5ZXJUcmVlSG9zdC0+bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKLSAgICByZXR1cm4gRkFMU0U7
Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQogewot
ICAgIEFTU0VSVChtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQpOwotICAgIG1fbGF5ZXJGbHVz
aFRpbWVyQ2FsbGJhY2tJZCA9IDA7Ci0KICAgICBmbHVzaEFuZFJlbmRlckxheWVycygpOwogCi0g
ICAgaWYgKHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgpKS0+ZGVzY2VuZGFu
dHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSAmJiAhbV9sYXllckZsdXNoVGltZXJDYWxs
YmFja0lkKSB7CisgICAgaWYgKCFtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLmlzU2NoZWR1bGVk
KCkgJiYgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5kZXNjZW5kYW50
c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpKSB7CiAgICAgICAgIGNvbnN0IGRvdWJsZSB0
YXJnZXRGUFMgPSA2MDsKICAgICAgICAgZG91YmxlIG5leHRGbHVzaCA9IHN0ZDo6bWF4KCgxIC8g
dGFyZ2V0RlBTKSAtIChjdXJyZW50VGltZSgpIC0gbV9sYXN0Rmx1c2hUaW1lKSwgMC4wKTsKLSAg
ICAgICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdE
S19QUklPUklUWV9FVkVOVFMsIG5leHRGbHVzaCAqIDEwMDAuMCwgcmVpbnRlcnByZXRfY2FzdDxH
U291cmNlRnVuYz4obGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxsYmFjayksIHRoaXMsIDApOwotICAg
ICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQs
ICJbV2ViS2l0XSBsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrIik7CisgICAgICAgIG1fbGF5
ZXJGbHVzaFRpbWVyQ2FsbGJhY2suc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBsYXllckZs
dXNoVGltZXIiLCBzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZp
cmVkLCB0aGlzKSwKKyAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KG5leHRG
bHVzaCkpLCBHREtfUFJJT1JJVFlfRVZFTlRTKTsKICAgICB9CiB9CiAKQEAgLTM5OCwxMCArMzg4
LDggQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzY2hlZHVsZUxheWVyRmx1c2goKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBXZSB1c2UgYSBHTGliIHRpbWVyIGJlY2F1c2Ugb3RoZXJ3aXNl
IEdUSysgZXZlbnQgaGFuZGxpbmcgZHVyaW5nIGRyYWdnaW5nIGNhbiBzdGFydmUgV2ViQ29yZSB0
aW1lcnMsIHdoaWNoIGhhdmUgYSBsb3dlciBwcmlvcml0eS4KLSAgICBpZiAoIW1fbGF5ZXJGbHVz
aFRpbWVyQ2FsbGJhY2tJZCkgewotICAgICAgICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQg
PSBnX3RpbWVvdXRfYWRkX2Z1bGwoR0RLX1BSSU9SSVRZX0VWRU5UUywgMCwgcmVpbnRlcnByZXRf
Y2FzdDxHU291cmNlRnVuYz4obGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxsYmFjayksIHRoaXMsIDAp
OwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX2xheWVyRmx1c2hUaW1lckNhbGxi
YWNrSWQsICJbV2ViS2l0XSBsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrIik7Ci0gICAgfQor
ICAgIGlmICghbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5pc1NjaGVkdWxlZCgpKQorICAgICAg
ICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLnNjaGVkdWxlKCJbV2ViS2l0XSBsYXllckZsdXNo
VGltZXIiLCBzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZpcmVk
LCB0aGlzKSwgR0RLX1BSSU9SSVRZX0VWRU5UUyk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0
azo6c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wgbGF5ZXJGbHVzaGluZ0VuYWJs
ZWQpCkBAIC00MjYsMTEgKzQxNCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6cGFnZUJhY2tn
cm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjYW5j
ZWxQZW5kaW5nTGF5ZXJGbHVzaCgpCiB7Ci0gICAgaWYgKCFtX2xheWVyRmx1c2hUaW1lckNhbGxi
YWNrSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfc291cmNlX3JlbW92ZShtX2xheWVyRmx1
c2hUaW1lckNhbGxiYWNrSWQpOwotICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9IDA7
CisgICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5jYW5jZWwoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDNjOGMyYTAuLmI4MzkzNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJU
cmVlSG9zdEd0ay5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC05Miw3ICs5Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
YW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogCiAgICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJl
ZCgpOwotICAgIHN0YXRpYyBnYm9vbGVhbiBsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrKExh
eWVyVHJlZUhvc3RHdGsqKTsKIAogICAgIFdlYkNvcmU6OkdMQ29udGV4dCogZ2xDb250ZXh0KCk7
CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJDb3JlOjpHTENv
bnRleHQ+IG1fY29udGV4dDsKICAgICBkb3VibGUgbV9sYXN0Rmx1c2hUaW1lOwogICAgIGJvb2wg
bV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7Ci0gICAgdW5zaWduZWQgbV9sYXllckZsdXNo
VGltZXJDYWxsYmFja0lkOworICAgIEdNYWluTG9vcFNvdXJjZSBtX2xheWVyRmx1c2hUaW1lckNh
bGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="256597"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>