<?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>78825</bug_id>
          
          <creation_ts>2012-02-16 09:30:22 -0800</creation_ts>
          <short_desc>Web Inspector: use static counters for estimation of allocated Documents, Nodes and JS EventListeners</short_desc>
          <delta_ts>2012-02-17 00:33:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>558263</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-16 09:30:22 -0800</bug_when>
    <thetext>This counters cost nothing but will be very useful in the Timeline panel. Values of the counters could be sent along with each timeline event unlike DOM counters collected by traversing DOM on each event since their calculation is quite expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558267</commentid>
    <comment_count>1</comment_count>
      <attachid>127392</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-16 09:33:01 -0800</bug_when>
    <thetext>Created attachment 127392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558274</commentid>
    <comment_count>2</comment_count>
      <attachid>127394</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-16 09:37:21 -0800</bug_when>
    <thetext>Created attachment 127394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558305</commentid>
    <comment_count>3</comment_count>
      <attachid>127392</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-16 10:23:11 -0800</bug_when>
    <thetext>Comment on attachment 127392
Patch

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

&gt; Source/WebCore/bindings/v8/V8AbstractEventListener.cpp:38
&gt; +#include &quot;InspectorInstrumentation.h&quot;

I would introduce InspectorCounters class that would have all the counter fields and guarantee a no-op upon the instrumentation call. WebCore/dom would update its values directly with no need for s_* in Node.h.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:334
&gt; +    ++InspectorMemoryAgent::counter(InspectorMemoryAgent::JSEventListenerCounter);

You could merge memory counters into the new InspectorCounter class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558308</commentid>
    <comment_count>4</comment_count>
      <attachid>127394</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-16 10:27:29 -0800</bug_when>
    <thetext>Comment on attachment 127394
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:334
&gt; +    ++InspectorMemoryAgent::counter(InspectorMemoryAgent::JSEventListenerCounter);

it looks strange. I&apos;d prefer to implement the counter as a class with int&amp; operator[](int index) { .... }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558959</commentid>
    <comment_count>5</comment_count>
      <attachid>127532</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-16 23:38:14 -0800</bug_when>
    <thetext>Created attachment 127532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558960</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-16 23:41:22 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 127392 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127392&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8AbstractEventListener.cpp:38
&gt; &gt; +#include &quot;InspectorInstrumentation.h&quot;
&gt; 
&gt; I would introduce InspectorCounters class that would have all the counter fields and guarantee a no-op upon the instrumentation call. WebCore/dom would update its values directly with no need for s_* in Node.h.
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:334
&gt; &gt; +    ++InspectorMemoryAgent::counter(InspectorMemoryAgent::JSEventListenerCounter);
&gt; 
&gt; You could merge memory counters into the new InspectorCounter class.
Done.

(In reply to comment #4)
&gt; (From update of attachment 127394 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127394&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:334
&gt; &gt; +    ++InspectorMemoryAgent::counter(InspectorMemoryAgent::JSEventListenerCounter);
&gt; 
&gt; it looks strange. I&apos;d prefer to implement the counter as a class with int&amp; operator[](int index) { .... }

There is no method which would return a reference to the counter anymore. Instead we have more restrictive inc/dec methods and value getter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559000</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-17 00:33:56 -0800</bug_when>
    <thetext>Committed r108047: &lt;http://trac.webkit.org/changeset/108047&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127392</attachid>
            <date>2012-02-16 09:33:01 -0800</date>
            <delta_ts>2012-02-16 23:37:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78825-20120216213259.patch</filename>
            <type>text/plain</type>
            <size>21011</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDMwNmNiY2Y3ODJjMzdi
ZWI4MDY1Yjg0ZDc1ZWUwZThkYzQ5NjlhNi4uMjMwZDE2M2VmZDllNTRiY2UwN2VhZGVhMDRkZmRj
ZDg1OGRhMWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzdGF0aWMgY291bnRlcnMgZm9yIGVzdGltYXRpb24gb2YgYWxsb2NhdGVkIERvY3Vt
ZW50cywgTm9kZXMgYW5kIEpTIEV2ZW50TGlzdGVuZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODgyNQorCisgICAgICAgIEludHJvZHVjZWQgc3Rh
dGljIGNvdW50ZXJzIG9mIGFsbG9jYXRlZCBEb2N1bWVudHMsIE5vZGVzIGFuZCBKUyBFdmVudExp
c3RlbmVycy4KKyAgICAgICAgVGhlaXIgdmFsdWVzIGFyZSBkaXNwbGF5ZWQgb24gdGhlIFRpbWVs
aW5lIHBhbmVsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
QWJzdHJhY3RFdmVudExpc3RlbmVyOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6flY4QWJzdHJhY3RFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9k
ZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAg
KE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dG90YWxOb2RlQ291bnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVKU0V2ZW50TGlzdGVuZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWREZWxldGVKU0V2ZW50TGlzdGVuZXJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlRG9jdW1lbnRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlRG9j
dW1lbnRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Lmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVKU0V2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZERlbGV0ZUpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlRG9jdW1lbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JN
ZW1vcnlBZ2VudDo6Y291bnRlcik6CisgICAgICAgIChJbnNwZWN0b3JNZW1vcnlBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ2FsbEZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1MKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVUaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRFdmFsdWF0ZVNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRIZWFw
U2l6ZVN0YXRpc3RpYyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0
aWNzLnByb3RvdHlwZS5hZGRUaW1saW5lRXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
bW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9kcmF3LmdldERvY3VtZW50Q291bnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9yZWZyZXNoQ3VycmVu
dFZhbHVlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9vblRpbWVs
aW5lRXZlbnRSZWNvcmRlZCk6CisKIDIwMTItMDItMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4cGxpY2l0bHkgbWFyayB1
bmRvYWJsZSBzdGF0ZSBmcm9tIHRoZSBmcm9udC1lbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggNzAxZjViZThhNzc1MjQ4NjZj
MjQwMTZlMmExMGNiZThiN2ExMzRlMy4uOTgwMmQxMzcwOWQ5ZmQ3YmU3ZmNiNzVhNTBiOTM1NDYw
OTYyMDRkYiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1NQp6Y21YP2lodm5RSW1KT25B
bzRlaGZhUFRXSUJzMWhRbHJyUW9sclVIXkNgPk4hbSpxd2hvMisxfHpkN0Zqe1hHQngKQ2RKJmNZ
CgpkZWx0YSA0Nwp1Y21YP2lodm5RSW1KT25Bb2FxY2o0RVlTRDM8WjtBKz8wYGM5P19QWWRFTVN7
WXxpKDtlLThrQ2F9YXw3CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDZlMjdlZWIxNjhkN2MzMGJiMWRjMWYy
MDE1ZWNlZmFkMTA5OWRiY2EuLmViM2QxNDU4YTJjNTQ1NGExYmRkMWVlODlhYmI2MzEzYTY0ZDU1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVu
dExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhFdmVudExpc3RlbmVyTGlzdC5oIgpAQCAtNTcsNiAr
NTgsNyBAQCBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIo
Ym9vbCBpc0F0dHJpYnV0ZSwgY29uc3QgV29ybGRDbwogICAgICwgbV9pc0F0dHJpYnV0ZShpc0F0
dHJpYnV0ZSkKICAgICAsIG1fd29ybGRDb250ZXh0KHdvcmxkQ29udGV4dCkKIHsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUpTRXZlbnRMaXN0ZW5lcigpOwogfQogCiBW
OEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6flY4QWJzdHJhY3RFdmVudExpc3RlbmVyKCkKQEAgLTY3
LDYgKzY5LDcgQEAgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6On5WOEFic3RyYWN0RXZlbnRMaXN0
ZW5lcigpCiAgICAgICAgIFY4RXZlbnRMaXN0ZW5lckxpc3Q6OmNsZWFyV3JhcHBlcihsaXN0ZW5l
ciwgbV9pc0F0dHJpYnV0ZSk7CiAgICAgfQogICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlSlNFdmVudExpc3RlbmVyKCk7
CiB9CiAKIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDhmNGFlYzE1OTQ5OTFmZWQ2OGEzMDUwZDMwZWRjMGEyYzE5NjFhMWIuLmYxYmY1
NjU4NmIxZjEyYTQzNzg4ODQ3NDU2ZGI2NmRkZGYzZjc2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtNTEwLDYgKzUxMCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICNpZm5kZWYgTkRF
QlVHCiAgICAgbV91cGRhdGluZ1N0eWxlU2VsZWN0b3IgPSBmYWxzZTsKICNlbmRpZgorICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlRG9jdW1lbnQoKTsKIH0KIAogc3RhdGlj
IHZvaWQgaGlzdG9ncmFtTXV0YXRpb25FdmVudFVzYWdlKGNvbnN0IHVuc2lnbmVkIHNob3J0JiBs
aXN0ZW5lclR5cGVzKQpAQCAtNTg2LDYgKzU4Nyw4IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQog
ICAgIC8vIGFzIHdlbGwgYXMgTm9kZS4gU2VlIGEgY29tbWVudCBvbiBUcmVlU2NvcGUuaCBmb3Ig
dGhlIHJlYXNvbi4KICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgY2xlYXJSYXJlRGF0
YSgpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREZWxldGVEb2N1bWVudCgp
OwogfQogCiB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDk3YThkNWVlODQzM2NhMGM0YTgwMzNkMTRmNjY0ODkzOGVkOGIwNWYuLmI4Njk4ZTE5
NjVlMDRjZjM2MjUxNWM3NDY2OGM5ZjI0N2E2NmIwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0xNDg2LDYgKzE0ODYsOSBAQCBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQs
IENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICNpZiAhZGVmaW5lZChOREVCVUcpIHx8IChkZWZpbmVk
KERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUykKICAgICB0cmFj
a0ZvckRlYnVnZ2luZygpOwogI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICArK3Nf
dG90YWxOb2RlQ291bnQ7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDllY2YwMDIzYjljNzAyODMzZTc4ZDk1NDZkN2Y5MTY5NWQ3MjYxOWYu
LjFhOWYzNzliZTU0ZDRkODIzMDU0MDNhNDQ4YjQ1ZjExMjdjZjVmMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTI5Niw2ICsyOTYsMTAgQEAgdm9pZCBOb2RlOjpzdG9wSWdub3JpbmdMZWFrcygpCiAj
ZW5kaWYKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCit1bnNpZ25lZCBpbnQgTm9kZTo6c190
b3RhbE5vZGVDb3VudCA9IDA7CisjZW5kaWYKKwogTm9kZTo6U3R5bGVDaGFuZ2UgTm9kZTo6ZGlm
Zihjb25zdCBSZW5kZXJTdHlsZSogczEsIGNvbnN0IFJlbmRlclN0eWxlKiBzMikKIHsKICAgICBT
dHlsZUNoYW5nZSBjaCA9IE5vSW5oZXJpdDsKQEAgLTQwNSw2ICs0MDksMTAgQEAgTm9kZTo6fk5v
ZGUoKQogCiAgICAgaWYgKGRvYykKICAgICAgICAgZG9jLT5ndWFyZERlcmVmKCk7CisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIC0tc190b3RhbE5vZGVDb3VudDsKKyNlbmRpZgogfQogCiB2
b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4
IDUwMjkyMGM3ZjI1OGIwYjdiNDViNjA1ZGJmYjQ5NTkwM2ZlZTcyODcuLmE0MTMyNDA2NDA2MmJj
YWIyMjU3YzlkOGUyYTBkZWQ4Y2ViMmFiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTQ1LDYgKzU0NSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dUcmVlQW5kTWFyayhjb25zdCBOb2RlKiBtYXJrZWRO
b2RlMSwgY29uc3QgY2hhciogbWFya2VkTGFiZWwxLCBjb25zdCBOb2RlKiBtYXJrZWROb2RlMiA9
IDAsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMiA9IDApIGNvbnN0OwogICAgIHZvaWQgc2hvd1Ry
ZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBjb25zdDsKICNlbmRpZgorI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisgICAgc3RhdGljIHVuc2lnbmVkIGludCB0b3RhbE5vZGVDb3VudCgpIHsgcmV0dXJuIHNf
dG90YWxOb2RlQ291bnQ7IH0KKyNlbmRpZgogCiAgICAgdm9pZCByZWdpc3RlckR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCopOwogICAgIHZvaWQgdW5yZWdpc3Rl
ckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCopOwpAQCAtNzg0
LDYgKzc4Nyw5IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBt
X25leHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOworI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisgICAgc3RhdGljIHVuc2lnbmVkIGludCBzX3RvdGFsTm9kZUNvdW50OworI2VuZGlmCiAK
IHByb3RlY3RlZDoKICAgICBib29sIGlzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCA5NWQ2ZjMwYzY3MDgyOWIyYmNmNDM3M2JlZjc2MzYzYTU0ODI4NTgwLi45OGY3NzQ5
NTQ3YjFjNDc4ZDBmOWVjY2JjODc2NTQwMWNmYjk4YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTMsNiAr
NTMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCkBAIC0zMjgsNiArMzI5LDI2IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RyCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3Bh
dGNoRXZlbnQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0
ZUpTRXZlbnRMaXN0ZW5lckltcGwoKQoreworICAgICsrSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNv
dW50ZXIoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OkpTRXZlbnRMaXN0ZW5lckNvdW50ZXIpOworfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlSlNFdmVudExpc3RlbmVy
SW1wbCgpCit7CisgICAgLS1JbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y291bnRlcihJbnNwZWN0b3JN
ZW1vcnlBZ2VudDo6SlNFdmVudExpc3RlbmVyQ291bnRlcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVEb2N1bWVudEltcGwoKQoreworICAgICsrSW5zcGVj
dG9yTWVtb3J5QWdlbnQ6OmNvdW50ZXIoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OkRvY3VtZW50Q291
bnRlcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREZWxldGVEb2N1
bWVudEltcGwoKQoreworICAgIC0tSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNvdW50ZXIoSW5zcGVj
dG9yTWVtb3J5QWdlbnQ6OkRvY3VtZW50Q291bnRlcik7Cit9CisKIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlw
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCmluZGV4IGRhN2RmZTAxOTI2MDg5ZjczNWNjMzBlMWQyOTk5NTIxNGFjMDExZDguLjdk
OTJhNzNjYjkzOGJjNjc1NTZkYzQwYTZhNGVjZmEyZDU0NWZiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTExMiw2
ICsxMTIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50KGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNv
bnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZERpc3BhdGNoRXZlbnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVKU0V2ZW50TGlzdGVuZXIoKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWREZWxldGVKU0V2ZW50TGlzdGVuZXIoKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRDcmVhdGVEb2N1bWVudCgpOworICAgIHN0YXRpYyB2b2lkIGRpZERlbGV0ZURvY3VtZW50KCk7
CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRXZhbHVhdGVT
Y3JpcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogICAgIHN0
YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50IHRpbWVySWQpOwpAQCAtMjYy
LDYgKzI2NiwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Kik7CiAgICAg
c3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVKU0V2ZW50
TGlzdGVuZXJJbXBsKCk7CisgICAgc3RhdGljIHZvaWQgZGlkRGVsZXRlSlNFdmVudExpc3RlbmVy
SW1wbCgpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZURvY3VtZW50SW1wbCgpOworICAgIHN0
YXRpYyB2b2lkIGRpZERlbGV0ZURvY3VtZW50SW1wbCgpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
RmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgaW50IHRpbWVySWQpOwpAQCAtNjQ2
LDYgKzY1NCwzNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERp
c3BhdGNoRXZlbnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbgogI2VuZGlmCiB9CiAKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSlNFdmVudExpc3RlbmVy
KCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGRpZENyZWF0ZUpTRXZlbnRMaXN0ZW5l
ckltcGwoKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZERlbGV0ZUpTRXZlbnRMaXN0ZW5lcigpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBkaWREZWxldGVKU0V2ZW50TGlzdGVuZXJJbXBsKCk7CisjZW5kaWYKK30KKworaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVEb2N1bWVudCgpCit7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBkaWRDcmVhdGVEb2N1bWVudEltcGwoKTsKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERlbGV0ZURv
Y3VtZW50KCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGRpZERlbGV0ZURvY3VtZW50
SW1wbCgpOworI2VuZGlmCit9CisKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCmluZGV4IDcyNDJkNjVmYWQ5YWQ4YjNkY2YwYTRhNmZjOTBmMGEwOGY1NjEwNjgu
LjdjODU5YThmYTRmZjFiYjNmMTc3ZWU3MTY3NDZjNjAxNDBiZjVlM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMjU0LDcg
KzI1NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVl
ID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgU3RyaW5nIGlkU3RyaW5nOwot
ICAgICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYgIWlkVmFsdWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmICghaWRWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIiMiKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaWRWYWx1ZSk7CiAgICAgICAgIH0K
QEAgLTI4NSw2ICsyODUsOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCitpbnQgSW5z
cGVjdG9yTWVtb3J5QWdlbnQ6OnNfY291bnRlcnNbQ291bnRlclR5cGVMZW5ndGhdOworCiBJbnNw
ZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggMzIwYWJk
OThlMzQ1YWEyMGUyZWEwZWYxNzFlYTRkNTI5ZjNiMmIyOS4uOGQ2NTVjZjZlMjllMjYwNDljNzA1
OTlmNmU1ZGY0ZGI5NDc1NjJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTYxLDEwICs2MSwxOSBAQCBwdWJsaWM6CiAKICAgICB+
SW5zcGVjdG9yTWVtb3J5QWdlbnQoKTsKIAorICAgIGVudW0gQ291bnRlclR5cGUgeworICAgICAg
ICBKU0V2ZW50TGlzdGVuZXJDb3VudGVyLAorICAgICAgICBEb2N1bWVudENvdW50ZXIsCisgICAg
ICAgIENvdW50ZXJUeXBlTGVuZ3RoCisgICAgfTsKKyAgICBzdGF0aWMgaW50JiBjb3VudGVyKENv
dW50ZXJUeXBlIHR5cGUpIHsgcmV0dXJuIHNfY291bnRlcnNbdHlwZV07IH0KKwogcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9y
U3RhdGUqLCBQYWdlKiwgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KTsKICAgICBQYWdlKiBt
X3BhZ2U7CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisKKyAgICBzdGF0aWMg
aW50IHNfY291bnRlcnNbQ291bnRlclR5cGVMZW5ndGhdOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCmluZGV4IGQyM2MxZWEyMWRiOGRmNTliZjFkOTAwZmE0MTUwMjNmZThmYzc0
NzUuLjY0ZmVlNzEzZDVjYWRmMjkzNTY4MTRlMmIyNjQ1MGNlNTFlNDY3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAg
LTE3Nyw3ICsxNzcsNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxDYWxsRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaQogCiB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZENhbGxGdW5jdGlvbigpCiB7Ci0gICAgY29sbGVjdERvbUNvdW50
ZXJzKCk7CiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6
RnVuY3Rpb25DYWxsKTsKIH0KIApAQCAtMTg4LDcgKzE4Nyw2IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6d2lsbERpc3BhdGNoRXZlbnQoY29uc3QgRXZlbnQmIGV2ZW50KQogCiB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQoKQogewotICAgIGNvbGxl
Y3REb21Db3VudGVycygpOwogICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJl
Y29yZFR5cGU6OkV2ZW50RGlzcGF0Y2gpOwogfQogCkBAIC0yMzIsNyArMjMwLDYgQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwodW5zaWduZWQgaW50IGVuZExpbmUp
CiAgICAgaWYgKCFtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICBUaW1lbGluZVJl
Y29yZEVudHJ5IGVudHJ5ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7CiAgICAgICAgIGVudHJ5LmRh
dGEtPnNldE51bWJlcigiZW5kTGluZSIsIGVuZExpbmUpOwotICAgICAgICBjb2xsZWN0RG9tQ291
bnRlcnMoKTsKICAgICAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3Jk
VHlwZTo6UGFyc2VIVE1MKTsKICAgICB9CiB9CkBAIC0yNTQsNyArMjUxLDYgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRmlyZVRpbWVyKGludCB0aW1lcklkKQogCiB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVUaW1lcigpCiB7Ci0gICAgY29sbGVjdERvbUNv
dW50ZXJzKCk7CiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlw
ZTo6VGltZXJGaXJlKTsKIH0KIApAQCAtMjg1LDcgKzI4MSw2IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6d2lsbEV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGlu
ZU51bWJlCiAgICAgCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEV2YWx1YXRlU2Ny
aXB0KCkKIHsKLSAgICBjb2xsZWN0RG9tQ291bnRlcnMoKTsKICAgICBkaWRDb21wbGV0ZUN1cnJl
bnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlOjpFdmFsdWF0ZVNjcmlwdCk7CiB9CiAKQEAgLTM5
NCwyMiArMzg5LDEzIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SGVhcFNpemVT
dGF0aXN0aWMoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpCiAgICAgcmVjb3JkLT5zZXROdW1iZXIo
InVzZWRIZWFwU2l6ZSIsIHVzZWRIZWFwU2l6ZSk7CiAgICAgcmVjb3JkLT5zZXROdW1iZXIoInRv
dGFsSGVhcFNpemUiLCB0b3RhbEhlYXBTaXplKTsKIAotfQotCi12b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmNvbGxlY3REb21Db3VudGVycygpCi17Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRC
b29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6aW5jbHVkZU1lbW9yeURldGFpbHMpKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKG1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTdHJpbmcgZXJyb3I7Ci0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBkb21H
cm91cHM7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc3RyaW5nczsKLSAgICBtX21lbW9y
eUFnZW50LT5nZXRET01Ob2RlQ291bnQoJmVycm9yLCBkb21Hcm91cHMsIHN0cmluZ3MpOwotCi0g
ICAgaWYgKGRvbUdyb3VwcykKLSAgICAgICAgbV9yZWNvcmRTdGFjay5sYXN0KCkucmVjb3JkLT5z
ZXRBcnJheSgiZG9tR3JvdXBzIiwgZG9tR3JvdXBzLnJlbGVhc2UoKSk7CisgICAgaWYgKG1fc3Rh
dGUtPmdldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjppbmNsdWRlTWVtb3J5RGV0YWlscykp
IHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY291bnRlcnMgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOworICAgICAgICBjb3VudGVycy0+c2V0TnVtYmVyKCJub2RlcyIsIE5v
ZGU6OnRvdGFsTm9kZUNvdW50KCkpOworICAgICAgICBjb3VudGVycy0+c2V0TnVtYmVyKCJkb2N1
bWVudHMiLCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y291bnRlcihJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6RG9jdW1lbnRDb3VudGVyKSk7CisgICAgICAgIGNvdW50ZXJzLT5zZXROdW1iZXIoImpzRXZl
bnRMaXN0ZW5lcnMiLCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y291bnRlcihJbnNwZWN0b3JNZW1v
cnlBZ2VudDo6SlNFdmVudExpc3RlbmVyQ291bnRlcikpOworICAgICAgICByZWNvcmQtPnNldE9i
amVjdCgiY291bnRlcnMiLCBjb3VudGVycy5yZWxlYXNlKCkpOworICAgIH0KIH0KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoY29uc3QgU3Ry
aW5nJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgKaW5kZXggZGMwYjllNGY2OTRjNDk5MTIxNmJlMDFjOTg5NGRhYmVkOTFiZWJl
OC4uYTYzNDYzYTFlMDU4ZjdjYjMxOWQzYzhiOGY4ZTAxNTZmYWRlZjRkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0xNDUs
NyArMTQ1LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcHVzaEN1cnJlbnRSZWNvcmQoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgY2FwdHVyZUNh
bGxTdGFjayk7CiAgICAgdm9pZCBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhJbnNwZWN0b3JPYmplY3Qq
IHJlY29yZCk7Ci0gICAgdm9pZCBjb2xsZWN0RG9tQ291bnRlcnMoKTsKICAgICAgICAgCiAgICAg
dm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2
b2lkIGFwcGVuZFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCmluZGV4IDIy
ZmZjOTk5ZWJiOWQ4ZTk1MjgzZTA0YjUwMjVlNzgyYzhlYWEwNjguLjA4M2JmYzdlMWJmODA0YTUz
MmRkMjA0OWVjMDEyOWQ1NmViODA0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKQEAgLTU1LDcgKzU1LDcgQEAg
V2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MgPSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBz
aWRlYmFyV2lkdGgpCiAKICAgICAvLyBQb3B1bGF0ZSBzaWRlYmFyCiAgICAgdGhpcy5fY291bnRl
clNpZGViYXJFbGVtZW50cyA9IFtdOwotICAgIHRoaXMuX2RvbUdyb3VwcyA9IHRoaXMuX2NyZWF0
ZUNvdW50ZXJTaWRlYmFyRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRPTSBncm91cCBj
b3VudDoiKSwgdHJ1ZSk7CisgICAgdGhpcy5fZG9jdW1lbnRzID0gdGhpcy5fY3JlYXRlQ291bnRl
clNpZGViYXJFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9jdW1lbnQgY291bnQ6Iiks
IHRydWUpOwogICAgIHRoaXMuX2RvbU5vZGVzID0gdGhpcy5fY3JlYXRlQ291bnRlclNpZGViYXJF
bGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRE9NIG5vZGUgY291bnQ6IiksIHRydWUpOwog
ICAgIHRoaXMuX2xpc3RlbmVycyA9IHRoaXMuX2NyZWF0ZUNvdW50ZXJTaWRlYmFyRWxlbWVudChX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IGxpc3RlbmVyIGNvdW50OiIpLCBmYWxzZSk7CiAK
QEAgLTEyMiwyOCArMTIyLDEyIEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3Rv
dHlwZSA9IHsKIAogICAgIGFkZFRpbWxpbmVFdmVudDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgdGltZSA9IGV2ZW50LmRhdGEuZW5kVGltZTsKLSAgICAgICAgdmFyIGRvbUdy
b3VwcyA9IGV2ZW50LmRhdGFbImRvbUdyb3VwcyJdOwotCi0gICAgICAgIHZhciBub2RlQ291bnQg
PSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvbUdyb3Vwcy5sZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgdmFyIGNvdW50ZXJzID0gZG9tR3JvdXBzW2ldLm5vZGVDb3VudDsKLSAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY291bnRlcnMubGVuZ3RoOyBqKyspCi0gICAg
ICAgICAgICAgICAgbm9kZUNvdW50ICs9IGNvdW50ZXJzW2pdLmNvdW50OwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIGxpc3RlbmVyQ291bnQgPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGRvbUdyb3Vwcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGNvdW50ZXJzID0g
ZG9tR3JvdXBzW2ldLmxpc3RlbmVyQ291bnQ7Ci0gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGNvdW50ZXJzLmxlbmd0aDsgaisrKQotICAgICAgICAgICAgICAgIGxpc3RlbmVyQ291bnQg
Kz0gY291bnRlcnNbal0uY291bnQ7Ci0gICAgICAgIH0KLQorICAgICAgICB2YXIgY291bnRlcnMg
PSBldmVudC5kYXRhWyJjb3VudGVycyJdOwogICAgICAgICB0aGlzLl9jb3VudGVycy5wdXNoKHsK
LSAgICAgICAgICAgIHRpbWU6IHRpbWUsCi0gICAgICAgICAgICBkb21Hcm91cENvdW50OiBkb21H
cm91cHMubGVuZ3RoLAotICAgICAgICAgICAgbm9kZUNvdW50OiBub2RlQ291bnQsCi0gICAgICAg
ICAgICBsaXN0ZW5lckNvdW50OiBsaXN0ZW5lckNvdW50CisgICAgICAgICAgICB0aW1lOiBldmVu
dC5kYXRhLmVuZFRpbWUsCisgICAgICAgICAgICBkb2N1bWVudENvdW50OiBjb3VudGVycy5kb2N1
bWVudHMsCisgICAgICAgICAgICBub2RlQ291bnQ6IGNvdW50ZXJzLm5vZGVzLAorICAgICAgICAg
ICAgbGlzdGVuZXJDb3VudDogY291bnRlcnMuanNFdmVudExpc3RlbmVycwogICAgICAgICB9KTsK
ICAgICB9LAogCkBAIC0xNTQsMTIgKzEzOCwxMiBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlz
dGljcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NsZWFyKCk7CiAgICAgICAgIHZhciBn
cmFwaEhlaWdodCA9IE1hdGgucm91bmQodGhpcy5fY2FudmFzLmhlaWdodCAvIDMpOwogCi0gICAg
ICAgIGZ1bmN0aW9uIGdldEdyb3VwQ291bnQoZW50cnkpCisgICAgICAgIGZ1bmN0aW9uIGdldERv
Y3VtZW50Q291bnQoZW50cnkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS5k
b21Hcm91cENvdW50OworICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmRvY3VtZW50Q291bnQ7CiAg
ICAgICAgIH0KICAgICAgICAgdGhpcy5fc2V0VmVydGljYWxDbGlwKDAgKiBncmFwaEhlaWdodCAr
IDIsIGdyYXBoSGVpZ2h0IC0gNCk7Ci0gICAgICAgIHRoaXMuX2RyYXdQb2x5bGluZShnZXRHcm91
cENvdW50LCAicmdiYSgxMDAsMCwwLDAuOCkiKTsKKyAgICAgICAgdGhpcy5fZHJhd1BvbHlsaW5l
KGdldERvY3VtZW50Q291bnQsICJyZ2JhKDEwMCwwLDAsMC44KSIpOwogICAgICAgICB0aGlzLl9k
cmF3Qm90dG9tQm91bmQoInJnYmEoMjAsMjAsMjAsMC44KSIpOwogCiAKQEAgLTIyNSw3ICsyMDks
NyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaS0tOwotICAgICAgICB0aGlzLl9k
b21Hcm91cHMuX3ZhbHVlLnRleHRDb250ZW50ID0gdGhpcy5fY291bnRlcnNbaV0uZG9tR3JvdXBD
b3VudDsKKyAgICAgICAgdGhpcy5fZG9jdW1lbnRzLl92YWx1ZS50ZXh0Q29udGVudCA9IHRoaXMu
X2NvdW50ZXJzW2ldLmRvY3VtZW50Q291bnQ7CiAgICAgICAgIHRoaXMuX2RvbU5vZGVzLl92YWx1
ZS50ZXh0Q29udGVudCA9IHRoaXMuX2NvdW50ZXJzW2ldLm5vZGVDb3VudDsKICAgICAgICAgdGhp
cy5fbGlzdGVuZXJzLl92YWx1ZS50ZXh0Q29udGVudCA9IHRoaXMuX2NvdW50ZXJzW2ldLmxpc3Rl
bmVyQ291bnQ7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCA2MWZhZDczZjA4NGU4NDczNjMwZTI0ZWUwMjIz
YWVjMjQyZmMwOWZmLi4zZGFiMGZhMzI2YmNhMTQyMGFlNWMyZGUyMDdjODIxNDlkZjQ4MTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBh
bmVsLmpzCkBAIC00NTEsNyArNDUxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9pbm5lckFkZFJlY29yZFRvVGltZWxpbmUoZXZlbnQu
ZGF0YSwgdGhpcy5fcm9vdFJlY29yZCk7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaChm
YWxzZSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX21lbW9yeVN0YXRpc3RpY3MgJiYgZXZlbnQuZGF0
YVsiZG9tR3JvdXBzIl0pCisgICAgICAgIGlmICh0aGlzLl9tZW1vcnlTdGF0aXN0aWNzICYmIGV2
ZW50LmRhdGFbImNvdW50ZXJzIl0pCiAgICAgICAgICAgICB0aGlzLl9tZW1vcnlTdGF0aXN0aWNz
LmFkZFRpbWxpbmVFdmVudChldmVudCk7CiAgICAgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127394</attachid>
            <date>2012-02-16 09:37:21 -0800</date>
            <delta_ts>2012-02-16 23:38:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78825-20120216213719.patch</filename>
            <type>text/plain</type>
            <size>22049</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDMwNmNiY2Y3ODJjMzdi
ZWI4MDY1Yjg0ZDc1ZWUwZThkYzQ5NjlhNi4uNGIwOGU3NzAyMjg3NDgzODdjMzhhNzc5OWNiOGNm
MWI5NWY4NWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAyLTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzdGF0aWMgY291bnRlcnMgZm9yIGVzdGltYXRpb24gb2YgYWxsb2NhdGVkIERvY3Vt
ZW50cywgTm9kZXMgYW5kIEpTIEV2ZW50TGlzdGVuZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODgyNQorCisgICAgICAgIEludHJvZHVjZWQgc3Rh
dGljIGNvdW50ZXJzIG9mIGFsbG9jYXRlZCBEb2N1bWVudHMsIE5vZGVzIGFuZCBKUyBFdmVudExp
c3RlbmVycy4KKyAgICAgICAgVGhlaXIgdmFsdWVzIGFyZSBkaXNwbGF5ZWQgb24gdGhlIFRpbWVs
aW5lIHBhbmVsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlz
dGVuZXI6OkpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVu
ZXI6On5KU0V2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RF
dmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QWJzdHJhY3RFdmVudExpc3Rl
bmVyOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpWOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcjo6flY4QWJzdHJhY3RFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp+
Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6dG90YWxOb2RlQ291bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVKU0V2ZW50TGlzdGVuZXJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRE
ZWxldGVKU0V2ZW50TGlzdGVuZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlRG9jdW1lbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlRG9jdW1lbnRJbXBsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDcmVhdGVKU0V2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERlbGV0ZUpT
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRGVsZXRlRG9jdW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y291bnRl
cik6CisgICAgICAgIChJbnNwZWN0b3JNZW1vcnlBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkQ2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRIZWFwU2l6ZVN0YXRpc3RpYyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTWVt
b3J5U3RhdGlzdGljcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5hZGRU
aW1saW5lRXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJv
dG90eXBlLl9kcmF3LmdldERvY3VtZW50Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
bW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9yZWZyZXNoQ3VycmVudFZhbHVlcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9vblRpbWVsaW5lRXZlbnRSZWNvcmRlZCk6
CisKIDIwMTItMDItMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4cGxpY2l0bHkgbWFyayB1bmRvYWJsZSBzdGF0ZSBmcm9t
IHRoZSBmcm9udC1lbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKaW5kZXggNzAxZjViZThhNzc1MjQ4NjZjMjQwMTZlMmExMGNiZThiN2Ex
MzRlMy4uOTgwMmQxMzcwOWQ5ZmQ3YmU3ZmNiNzVhNTBiOTM1NDYwOTYyMDRkYiAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSA1NQp6Y21YP2lodm5RSW1KT25BbzRlaGZhUFRXSUJzMWhRbHJy
UW9sclVIXkNgPk4hbSpxd2hvMisxfHpkN0Zqe1hHQngKQ2RKJmNZCgpkZWx0YSA0Nwp1Y21YP2lo
dm5RSW1KT25Bb2FxY2o0RVlTRDM8WjtBKz8wYGM5P19QWWRFTVN7WXxpKDtlLThrQ2F9YXw3Cgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
YTNjMzIwMTk3NDdiMzQzYjBhNWFkZDY4YmJlMWQ0MDI3OTEyMDUyZi4uMDI1M2QwZTkzNWM3OGI3
NjkyOGU0ZmZmODA2YTYwM2U4YzkwMWUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJF
dmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQu
aCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKQEAgLTQ1LDEwICs0NiwxMiBA
QCBKU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcihKU09iamVjdCogZnVuY3Rpb24sIEpT
T2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQQogICAgIGVsc2UKICAgICAgICAgQVNTRVJUKCFmdW5j
dGlvbik7CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUpTRXZlbnRM
aXN0ZW5lcigpOwogfQogCiBKU0V2ZW50TGlzdGVuZXI6On5KU0V2ZW50TGlzdGVuZXIoKQogewor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlSlNFdmVudExpc3RlbmVyKCk7
CiB9CiAKIEpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDZlMjdlZWIxNjhk
N2MzMGJiMWRjMWYyMDE1ZWNlZmFkMTA5OWRiY2EuLmViM2QxNDU4YTJjNTQ1NGExYmRkMWVlODlh
YmI2MzEzYTY0ZDU1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKICNpbmNsdWRlICJWOEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhFdmVudExpc3RlbmVyTGlzdC5o
IgpAQCAtNTcsNiArNTgsNyBAQCBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6VjhBYnN0cmFjdEV2
ZW50TGlzdGVuZXIoYm9vbCBpc0F0dHJpYnV0ZSwgY29uc3QgV29ybGRDbwogICAgICwgbV9pc0F0
dHJpYnV0ZShpc0F0dHJpYnV0ZSkKICAgICAsIG1fd29ybGRDb250ZXh0KHdvcmxkQ29udGV4dCkK
IHsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUpTRXZlbnRMaXN0ZW5l
cigpOwogfQogCiBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6flY4QWJzdHJhY3RFdmVudExpc3Rl
bmVyKCkKQEAgLTY3LDYgKzY5LDcgQEAgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6On5WOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcigpCiAgICAgICAgIFY4RXZlbnRMaXN0ZW5lckxpc3Q6OmNsZWFyV3Jh
cHBlcihsaXN0ZW5lciwgbV9pc0F0dHJpYnV0ZSk7CiAgICAgfQogICAgIGRpc3Bvc2VMaXN0ZW5l
ck9iamVjdCgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlSlNFdmVu
dExpc3RlbmVyKCk7CiB9CiAKIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV2ZW50KiBldmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDhmNGFlYzE1OTQ5OTFmZWQ2OGEzMDUwZDMwZWRjMGEyYzE5
NjFhMWIuLmYxYmY1NjU4NmIxZjEyYTQzNzg4ODQ3NDU2ZGI2NmRkZGYzZjc2ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNTEwLDYgKzUxMCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkK
ICNpZm5kZWYgTkRFQlVHCiAgICAgbV91cGRhdGluZ1N0eWxlU2VsZWN0b3IgPSBmYWxzZTsKICNl
bmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlRG9jdW1lbnQoKTsK
IH0KIAogc3RhdGljIHZvaWQgaGlzdG9ncmFtTXV0YXRpb25FdmVudFVzYWdlKGNvbnN0IHVuc2ln
bmVkIHNob3J0JiBsaXN0ZW5lclR5cGVzKQpAQCAtNTg2LDYgKzU4Nyw4IEBAIERvY3VtZW50Ojp+
RG9jdW1lbnQoKQogICAgIC8vIGFzIHdlbGwgYXMgTm9kZS4gU2VlIGEgY29tbWVudCBvbiBUcmVl
U2NvcGUuaCBmb3IgdGhlIHJlYXNvbi4KICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAg
Y2xlYXJSYXJlRGF0YSgpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREZWxl
dGVEb2N1bWVudCgpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDk3YThkNWVlODQzM2NhMGM0YTgwMzNkMTRmNjY0ODkzOGVkOGIw
NWYuLmI4Njk4ZTE5NjVlMDRjZjM2MjUxNWM3NDY2OGM5ZjI0N2E2NmIwMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xNDg2LDYgKzE0ODYsOSBAQCBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVu
dCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICNpZiAhZGVmaW5lZChOREVCVUcp
IHx8IChkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElD
UykKICAgICB0cmFja0ZvckRlYnVnZ2luZygpOwogI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICArK3NfdG90YWxOb2RlQ291bnQ7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDllY2YwMDIzYjljNzAyODMzZTc4ZDk1NDZkN2Y5
MTY5NWQ3MjYxOWYuLjFhOWYzNzliZTU0ZDRkODIzMDU0MDNhNDQ4YjQ1ZjExMjdjZjVmMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTI5Niw2ICsyOTYsMTAgQEAgdm9pZCBOb2RlOjpzdG9wSWdub3Jp
bmdMZWFrcygpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCit1bnNpZ25lZCBp
bnQgTm9kZTo6c190b3RhbE5vZGVDb3VudCA9IDA7CisjZW5kaWYKKwogTm9kZTo6U3R5bGVDaGFu
Z2UgTm9kZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogczEsIGNvbnN0IFJlbmRlclN0eWxlKiBz
MikKIHsKICAgICBTdHlsZUNoYW5nZSBjaCA9IE5vSW5oZXJpdDsKQEAgLTQwNSw2ICs0MDksMTAg
QEAgTm9kZTo6fk5vZGUoKQogCiAgICAgaWYgKGRvYykKICAgICAgICAgZG9jLT5ndWFyZERlcmVm
KCk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIC0tc190b3RhbE5vZGVDb3VudDsKKyNl
bmRpZgogfQogCiB2b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCmluZGV4IDUwMjkyMGM3ZjI1OGIwYjdiNDViNjA1ZGJmYjQ5NTkwM2ZlZTcyODcuLmE0
MTMyNDA2NDA2MmJjYWIyMjU3YzlkOGUyYTBkZWQ4Y2ViMmFiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAt
NTQ1LDYgKzU0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dUcmVlQW5kTWFyayhjb25zdCBO
b2RlKiBtYXJrZWROb2RlMSwgY29uc3QgY2hhciogbWFya2VkTGFiZWwxLCBjb25zdCBOb2RlKiBt
YXJrZWROb2RlMiA9IDAsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMiA9IDApIGNvbnN0OwogICAg
IHZvaWQgc2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBjb25zdDsKICNlbmRpZgorI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHVuc2lnbmVkIGludCB0b3RhbE5vZGVDb3VudCgp
IHsgcmV0dXJuIHNfdG90YWxOb2RlQ291bnQ7IH0KKyNlbmRpZgogCiAgICAgdm9pZCByZWdpc3Rl
ckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCopOwogICAgIHZv
aWQgdW5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRyZWVOb2RlTGlz
dCopOwpAQCAtNzg0LDYgKzc4Nyw5IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9wcmV2aW91czsK
ICAgICBOb2RlKiBtX25leHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOworI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHVuc2lnbmVkIGludCBzX3RvdGFsTm9kZUNvdW50
OworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzUGFyc2luZ0NoaWxkcmVuRmluaXNo
ZWQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFn
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAppbmRleCA5NWQ2ZjMwYzY3MDgyOWIyYmNmNDM3M2JlZjc2MzYzYTU0ODI4
NTgwLi45OGY3NzQ5NTQ3YjFjNDc4ZDBmOWVjY2JjODc2NTQwMWNmYjk4YTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb2Zp
bGVyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCkBAIC0zMjgs
NiArMzI5LDI2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2
ZW50T25XaW5kb3dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RyCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZERpc3BhdGNoRXZlbnQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZUpTRXZlbnRMaXN0ZW5lckltcGwoKQoreworICAgICsrSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6OmNvdW50ZXIoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OkpTRXZlbnRMaXN0ZW5lckNv
dW50ZXIpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVsZXRlSlNF
dmVudExpc3RlbmVySW1wbCgpCit7CisgICAgLS1JbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y291bnRl
cihJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SlNFdmVudExpc3RlbmVyQ291bnRlcik7Cit9CisKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVEb2N1bWVudEltcGwoKQorewor
ICAgICsrSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNvdW50ZXIoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OkRvY3VtZW50Q291bnRlcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWREZWxldGVEb2N1bWVudEltcGwoKQoreworICAgIC0tSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNv
dW50ZXIoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OkRvY3VtZW50Q291bnRlcik7Cit9CisKIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxF
dmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogewogICAgIGludCB0aW1lbGlu
ZUFnZW50SWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRhN2RmZTAxOTI2MDg5ZjczNWNjMzBlMWQyOTk5NTIx
NGFjMDExZDguLjdkOTJhNzNjYjkzOGJjNjc1NTZkYzQwYTZhNGVjZmEyZDU0NWZiNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTExMiw2ICsxMTIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRs
ZUV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
dyhGcmFtZSosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOwogICAgIHN0
YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVKU0V2ZW50TGlzdGVu
ZXIoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREZWxldGVKU0V2ZW50TGlzdGVuZXIoKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRDcmVhdGVEb2N1bWVudCgpOworICAgIHN0YXRpYyB2b2lkIGRpZERlbGV0
ZURvY3VtZW50KCk7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3
aWxsRXZhbHVhdGVTY3JpcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1i
ZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50IHRpbWVy
SWQpOwpAQCAtMjYyLDYgKzI2NiwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZERp
c3BhdGNoRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZl
bnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEV2ZW50JiwgRE9NV2lu
ZG93Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVKU0V2ZW50TGlzdGVuZXJJbXBsKCk7CisgICAgc3RhdGljIHZvaWQgZGlkRGVsZXRlSlNF
dmVudExpc3RlbmVySW1wbCgpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZURvY3VtZW50SW1w
bCgpOworICAgIHN0YXRpYyB2b2lkIGRpZERlbGV0ZURvY3VtZW50SW1wbCgpOwogICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2NyaXB0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgaW50IHRpbWVy
SWQpOwpAQCAtNjQ2LDYgKzY1NCwzNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbgogI2VuZGlm
CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSlNF
dmVudExpc3RlbmVyKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGRpZENyZWF0ZUpT
RXZlbnRMaXN0ZW5lckltcGwoKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZERlbGV0ZUpTRXZlbnRMaXN0ZW5lcigpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBkaWREZWxldGVKU0V2ZW50TGlzdGVuZXJJbXBsKCk7CisjZW5kaWYK
K30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVEb2N1
bWVudCgpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBkaWRDcmVhdGVEb2N1bWVudElt
cGwoKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZERlbGV0ZURvY3VtZW50KCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGRpZERl
bGV0ZURvY3VtZW50SW1wbCgpOworI2VuZGlmCit9CisKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3Jp
cHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDcyNDJkNjVmYWQ5YWQ4YjNkY2YwYTRhNmZjOTBm
MGEwOGY1NjEwNjguLjdjODU5YThmYTRmZjFiYjNmMTc3ZWU3MTY3NDZjNjAxNDBiZjVlM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBpZFZhbHVlID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgU3RyaW5n
IGlkU3RyaW5nOwotICAgICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYgIWlkVmFsdWUuaXNF
bXB0eSgpKSB7CisgICAgICAgIGlmICghaWRWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIiMiKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaWRWYWx1ZSk7
CiAgICAgICAgIH0KQEAgLTI4NSw2ICsyODUsOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZQogCitpbnQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OnNfY291bnRlcnNbQ291bnRlclR5cGVMZW5n
dGhdOworCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgK
aW5kZXggMzIwYWJkOThlMzQ1YWEyMGUyZWEwZWYxNzFlYTRkNTI5ZjNiMmIyOS4uOGQ2NTVjZjZl
MjllMjYwNDljNzA1OTlmNmU1ZGY0ZGI5NDc1NjJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTYxLDEwICs2MSwxOSBAQCBwdWJs
aWM6CiAKICAgICB+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKTsKIAorICAgIGVudW0gQ291bnRlclR5
cGUgeworICAgICAgICBKU0V2ZW50TGlzdGVuZXJDb3VudGVyLAorICAgICAgICBEb2N1bWVudENv
dW50ZXIsCisgICAgICAgIENvdW50ZXJUeXBlTGVuZ3RoCisgICAgfTsKKyAgICBzdGF0aWMgaW50
JiBjb3VudGVyKENvdW50ZXJUeXBlIHR5cGUpIHsgcmV0dXJuIHNfY291bnRlcnNbdHlwZV07IH0K
KwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKiwgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KTsK
ICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisK
KyAgICBzdGF0aWMgaW50IHNfY291bnRlcnNbQ291bnRlclR5cGVMZW5ndGhdOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGQyM2MxZWEyMWRiOGRmNTliZjFkOTAwZmE0
MTUwMjNmZThmYzc0NzUuLjY0ZmVlNzEzZDVjYWRmMjkzNTY4MTRlMmIyNjQ1MGNlNTFlNDY3MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKQEAgLTE3Nyw3ICsxNzcsNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OndpbGxDYWxsRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaQogCiB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENhbGxGdW5jdGlvbigpCiB7Ci0gICAgY29s
bGVjdERvbUNvdW50ZXJzKCk7CiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5l
UmVjb3JkVHlwZTo6RnVuY3Rpb25DYWxsKTsKIH0KIApAQCAtMTg4LDcgKzE4Nyw2IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERpc3BhdGNoRXZlbnQoY29uc3QgRXZlbnQmIGV2
ZW50KQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQoKQog
ewotICAgIGNvbGxlY3REb21Db3VudGVycygpOwogICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29y
ZChUaW1lbGluZVJlY29yZFR5cGU6OkV2ZW50RGlzcGF0Y2gpOwogfQogCkBAIC0yMzIsNyArMjMw
LDYgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwodW5zaWduZWQg
aW50IGVuZExpbmUpCiAgICAgaWYgKCFtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAg
ICBUaW1lbGluZVJlY29yZEVudHJ5IGVudHJ5ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7CiAgICAg
ICAgIGVudHJ5LmRhdGEtPnNldE51bWJlcigiZW5kTGluZSIsIGVuZExpbmUpOwotICAgICAgICBj
b2xsZWN0RG9tQ291bnRlcnMoKTsKICAgICAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRp
bWVsaW5lUmVjb3JkVHlwZTo6UGFyc2VIVE1MKTsKICAgICB9CiB9CkBAIC0yNTQsNyArMjUxLDYg
QEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRmlyZVRpbWVyKGludCB0aW1lcklk
KQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVUaW1lcigpCiB7Ci0gICAg
Y29sbGVjdERvbUNvdW50ZXJzKCk7CiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVs
aW5lUmVjb3JkVHlwZTo6VGltZXJGaXJlKTsKIH0KIApAQCAtMjg1LDcgKzI4MSw2IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbEV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsLCBpbnQgbGluZU51bWJlCiAgICAgCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZEV2YWx1YXRlU2NyaXB0KCkKIHsKLSAgICBjb2xsZWN0RG9tQ291bnRlcnMoKTsKICAgICBkaWRD
b21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlOjpFdmFsdWF0ZVNjcmlwdCk7
CiB9CiAKQEAgLTM5NCwyMiArMzg5LDEzIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
c2V0SGVhcFNpemVTdGF0aXN0aWMoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpCiAgICAgcmVjb3Jk
LT5zZXROdW1iZXIoInVzZWRIZWFwU2l6ZSIsIHVzZWRIZWFwU2l6ZSk7CiAgICAgcmVjb3JkLT5z
ZXROdW1iZXIoInRvdGFsSGVhcFNpemUiLCB0b3RhbEhlYXBTaXplKTsKIAotfQotCi12b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNvbGxlY3REb21Db3VudGVycygpCi17Ci0gICAgaWYgKCFt
X3N0YXRlLT5nZXRCb29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6aW5jbHVkZU1lbW9yeURldGFp
bHMpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgZXJyb3I7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBkb21Hcm91cHM7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc3RyaW5nczsK
LSAgICBtX21lbW9yeUFnZW50LT5nZXRET01Ob2RlQ291bnQoJmVycm9yLCBkb21Hcm91cHMsIHN0
cmluZ3MpOwotCi0gICAgaWYgKGRvbUdyb3VwcykKLSAgICAgICAgbV9yZWNvcmRTdGFjay5sYXN0
KCkucmVjb3JkLT5zZXRBcnJheSgiZG9tR3JvdXBzIiwgZG9tR3JvdXBzLnJlbGVhc2UoKSk7Cisg
ICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjppbmNsdWRlTWVt
b3J5RGV0YWlscykpIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY291bnRlcnMg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICBjb3VudGVycy0+c2V0TnVtYmVy
KCJub2RlcyIsIE5vZGU6OnRvdGFsTm9kZUNvdW50KCkpOworICAgICAgICBjb3VudGVycy0+c2V0
TnVtYmVyKCJkb2N1bWVudHMiLCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y291bnRlcihJbnNwZWN0
b3JNZW1vcnlBZ2VudDo6RG9jdW1lbnRDb3VudGVyKSk7CisgICAgICAgIGNvdW50ZXJzLT5zZXRO
dW1iZXIoImpzRXZlbnRMaXN0ZW5lcnMiLCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y291bnRlcihJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6SlNFdmVudExpc3RlbmVyQ291bnRlcikpOworICAgICAgICBy
ZWNvcmQtPnNldE9iamVjdCgiY291bnRlcnMiLCBjb3VudGVycy5yZWxlYXNlKCkpOworICAgIH0K
IH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNv
cmQoY29uc3QgU3RyaW5nJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggZGMwYjllNGY2OTRjNDk5MTIxNmJlMDFjOTg5
NGRhYmVkOTFiZWJlOC4uYTYzNDYzYTFlMDU4ZjdjYjMxOWQzYzhiOGY4ZTAxNTZmYWRlZjRkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCkBAIC0xNDUsNyArMTQ1LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcHVzaEN1cnJlbnRS
ZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBjb25zdCBTdHJpbmcmIHR5cGUsIGJv
b2wgY2FwdHVyZUNhbGxTdGFjayk7CiAgICAgdm9pZCBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhJbnNw
ZWN0b3JPYmplY3QqIHJlY29yZCk7Ci0gICAgdm9pZCBjb2xsZWN0RG9tQ291bnRlcnMoKTsKICAg
ICAgICAgCiAgICAgdm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoY29uc3QgU3RyaW5nJiB0
eXBlKTsKICAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2spOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNz
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNz
LmpzCmluZGV4IDIyZmZjOTk5ZWJiOWQ4ZTk1MjgzZTA0YjUwMjVlNzgyYzhlYWEwNjguLjA4M2Jm
YzdlMWJmODA0YTUzMmRkMjA0OWVjMDEyOWQ1NmViODA0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKQEAgLTU1
LDcgKzU1LDcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MgPSBmdW5jdGlvbih0aW1l
bGluZVBhbmVsLCBzaWRlYmFyV2lkdGgpCiAKICAgICAvLyBQb3B1bGF0ZSBzaWRlYmFyCiAgICAg
dGhpcy5fY291bnRlclNpZGViYXJFbGVtZW50cyA9IFtdOwotICAgIHRoaXMuX2RvbUdyb3VwcyA9
IHRoaXMuX2NyZWF0ZUNvdW50ZXJTaWRlYmFyRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRPTSBncm91cCBjb3VudDoiKSwgdHJ1ZSk7CisgICAgdGhpcy5fZG9jdW1lbnRzID0gdGhpcy5f
Y3JlYXRlQ291bnRlclNpZGViYXJFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9jdW1l
bnQgY291bnQ6IiksIHRydWUpOwogICAgIHRoaXMuX2RvbU5vZGVzID0gdGhpcy5fY3JlYXRlQ291
bnRlclNpZGViYXJFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRE9NIG5vZGUgY291bnQ6
IiksIHRydWUpOwogICAgIHRoaXMuX2xpc3RlbmVycyA9IHRoaXMuX2NyZWF0ZUNvdW50ZXJTaWRl
YmFyRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IGxpc3RlbmVyIGNvdW50OiIp
LCBmYWxzZSk7CiAKQEAgLTEyMiwyOCArMTIyLDEyIEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0
aXN0aWNzLnByb3RvdHlwZSA9IHsKIAogICAgIGFkZFRpbWxpbmVFdmVudDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICB2YXIgdGltZSA9IGV2ZW50LmRhdGEuZW5kVGltZTsKLSAgICAg
ICAgdmFyIGRvbUdyb3VwcyA9IGV2ZW50LmRhdGFbImRvbUdyb3VwcyJdOwotCi0gICAgICAgIHZh
ciBub2RlQ291bnQgPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvbUdyb3Vwcy5s
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGNvdW50ZXJzID0gZG9tR3JvdXBzW2ldLm5v
ZGVDb3VudDsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY291bnRlcnMubGVuZ3Ro
OyBqKyspCi0gICAgICAgICAgICAgICAgbm9kZUNvdW50ICs9IGNvdW50ZXJzW2pdLmNvdW50Owot
ICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGxpc3RlbmVyQ291bnQgPSAwOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRvbUdyb3Vwcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFy
IGNvdW50ZXJzID0gZG9tR3JvdXBzW2ldLmxpc3RlbmVyQ291bnQ7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IGNvdW50ZXJzLmxlbmd0aDsgaisrKQotICAgICAgICAgICAgICAgIGxp
c3RlbmVyQ291bnQgKz0gY291bnRlcnNbal0uY291bnQ7Ci0gICAgICAgIH0KLQorICAgICAgICB2
YXIgY291bnRlcnMgPSBldmVudC5kYXRhWyJjb3VudGVycyJdOwogICAgICAgICB0aGlzLl9jb3Vu
dGVycy5wdXNoKHsKLSAgICAgICAgICAgIHRpbWU6IHRpbWUsCi0gICAgICAgICAgICBkb21Hcm91
cENvdW50OiBkb21Hcm91cHMubGVuZ3RoLAotICAgICAgICAgICAgbm9kZUNvdW50OiBub2RlQ291
bnQsCi0gICAgICAgICAgICBsaXN0ZW5lckNvdW50OiBsaXN0ZW5lckNvdW50CisgICAgICAgICAg
ICB0aW1lOiBldmVudC5kYXRhLmVuZFRpbWUsCisgICAgICAgICAgICBkb2N1bWVudENvdW50OiBj
b3VudGVycy5kb2N1bWVudHMsCisgICAgICAgICAgICBub2RlQ291bnQ6IGNvdW50ZXJzLm5vZGVz
LAorICAgICAgICAgICAgbGlzdGVuZXJDb3VudDogY291bnRlcnMuanNFdmVudExpc3RlbmVycwog
ICAgICAgICB9KTsKICAgICB9LAogCkBAIC0xNTQsMTIgKzEzOCwxMiBAQCBXZWJJbnNwZWN0b3Iu
TWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NsZWFyKCk7CiAg
ICAgICAgIHZhciBncmFwaEhlaWdodCA9IE1hdGgucm91bmQodGhpcy5fY2FudmFzLmhlaWdodCAv
IDMpOwogCi0gICAgICAgIGZ1bmN0aW9uIGdldEdyb3VwQ291bnQoZW50cnkpCisgICAgICAgIGZ1
bmN0aW9uIGdldERvY3VtZW50Q291bnQoZW50cnkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlbnRyeS5kb21Hcm91cENvdW50OworICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmRvY3Vt
ZW50Q291bnQ7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fc2V0VmVydGljYWxDbGlwKDAgKiBn
cmFwaEhlaWdodCArIDIsIGdyYXBoSGVpZ2h0IC0gNCk7Ci0gICAgICAgIHRoaXMuX2RyYXdQb2x5
bGluZShnZXRHcm91cENvdW50LCAicmdiYSgxMDAsMCwwLDAuOCkiKTsKKyAgICAgICAgdGhpcy5f
ZHJhd1BvbHlsaW5lKGdldERvY3VtZW50Q291bnQsICJyZ2JhKDEwMCwwLDAsMC44KSIpOwogICAg
ICAgICB0aGlzLl9kcmF3Qm90dG9tQm91bmQoInJnYmEoMjAsMjAsMjAsMC44KSIpOwogCiAKQEAg
LTIyNSw3ICsyMDksNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaS0tOwotICAg
ICAgICB0aGlzLl9kb21Hcm91cHMuX3ZhbHVlLnRleHRDb250ZW50ID0gdGhpcy5fY291bnRlcnNb
aV0uZG9tR3JvdXBDb3VudDsKKyAgICAgICAgdGhpcy5fZG9jdW1lbnRzLl92YWx1ZS50ZXh0Q29u
dGVudCA9IHRoaXMuX2NvdW50ZXJzW2ldLmRvY3VtZW50Q291bnQ7CiAgICAgICAgIHRoaXMuX2Rv
bU5vZGVzLl92YWx1ZS50ZXh0Q29udGVudCA9IHRoaXMuX2NvdW50ZXJzW2ldLm5vZGVDb3VudDsK
ICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLl92YWx1ZS50ZXh0Q29udGVudCA9IHRoaXMuX2NvdW50
ZXJzW2ldLmxpc3RlbmVyQ291bnQ7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCA2MWZhZDczZjA4NGU4NDcz
NjMwZTI0ZWUwMjIzYWVjMjQyZmMwOWZmLi4zZGFiMGZhMzI2YmNhMTQyMGFlNWMyZGUyMDdjODIx
NDlkZjQ4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCkBAIC00NTEsNyArNDUxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbm5lckFkZFJlY29yZFRvVGlt
ZWxpbmUoZXZlbnQuZGF0YSwgdGhpcy5fcm9vdFJlY29yZCk7CiAgICAgICAgIHRoaXMuX3NjaGVk
dWxlUmVmcmVzaChmYWxzZSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX21lbW9yeVN0YXRpc3RpY3Mg
JiYgZXZlbnQuZGF0YVsiZG9tR3JvdXBzIl0pCisgICAgICAgIGlmICh0aGlzLl9tZW1vcnlTdGF0
aXN0aWNzICYmIGV2ZW50LmRhdGFbImNvdW50ZXJzIl0pCiAgICAgICAgICAgICB0aGlzLl9tZW1v
cnlTdGF0aXN0aWNzLmFkZFRpbWxpbmVFdmVudChldmVudCk7CiAgICAgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127532</attachid>
            <date>2012-02-16 23:38:14 -0800</date>
            <delta_ts>2012-02-17 00:29:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78825-20120217113811.patch</filename>
            <type>text/plain</type>
            <size>33552</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc4ZGMyYzA3MmE1ODFk
MzNiMjk0NDI2ODNmYWYzYTYzNmE5ZWFiNC4uZTA2MGI2MjhkYzc3ZTBlNWIxZWQ5ODBhMzUxZjQx
NjExMjM0MjFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTAyLTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzdGF0aWMgY291bnRlcnMgZm9yIGVzdGltYXRpb24gb2YgYWxsb2NhdGVkIERvY3Vt
ZW50cywgTm9kZXMgYW5kIEpTIEV2ZW50TGlzdGVuZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODgyNQorCisgICAgICAgIEludHJvZHVjZWQgc3Rh
dGljIGNvdW50ZXJzIG9mIGFsbG9jYXRlZCBEb2N1bWVudHMsIE5vZGVzIGFuZCBKUyBFdmVudExp
c3RlbmVycy4KKyAgICAgICAgVGhlaXIgdmFsdWVzIGFyZSBkaXNwbGF5ZWQgb24gdGhlIFRpbWVs
aW5lIHBhbmVsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6On5KU0V2ZW50TGlzdGVuZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6flY4QWJzdHJhY3RFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9j
dW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6fk5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvdW50ZXJzOjpjb3VudGVyVmFsdWUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yQ291bnRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ291bnRlcnM6OmluY3JlbWVudENvdW50ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaXJlVGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRXZhbHVhdGVTY3JpcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SGVhcFNpemVTdGF0aXN0
aWMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5hZGRUaW1saW5lRXZlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9kcmF3LmdldERvY3VtZW50
Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBl
Ll9yZWZyZXNoQ3VycmVudFZhbHVlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlLl9vblRpbWVsaW5lRXZlbnRSZWNvcmRlZCk6CisKIDIwMTItMDItMTYgIFNoaW55YSBL
YXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFt2OF0gdjggZG9lc24n
dCBhc3N1bWUgdG8gZG8gJ25ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpJwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBhNzNiMjY0YmI3NTJjOWM2N2E2YzZmZWE3NzI3NTQzZThiMjFlZjhhLi5jOTNl
OWU3NjFlNDA0ZmY4ZTFkNjlmYTg5OGU5Njg3YjM0Y2EwMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtODkyLDYgKzg5Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckNvdW50ZXJzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDcwMWY1YmU4YTc3NTI0ODY2
YzI0MDE2ZTJhMTBjYmU4YjdhMTM0ZTMuLjk4MDJkMTM3MDlkOWZkN2JlN2ZjYjc1YTUwYjkzNTQ2
MDk2MjA0ZGIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTUKemNtWD9paHZuUUltSk9u
QW80ZWhmYVBUV0lCczFoUWxyclFvbHJVSF5DYD5OIW0qcXdobzIrMXx6ZDdGantYR0J4CkNkSiZj
WQoKZGVsdGEgNDcKdWNtWD9paHZuUUltSk9uQW9hcWNqNEVZU0QzPFo7QSs/MGBjOT9fUFlkRU1T
e1l8aSg7ZS04a0NhfWF8NwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDkxMjRj
MWU3NTIxNTNlZWMwMmY1MWE1MGNiMWU3OGM5MjAxZjQ5OTQuLjlhOGZhNjY1ZWMxZGIzYTQwODlj
ODZmZDE1MWE3ODIyN2FlOTBjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MjM3Nyw2ICsyMzc3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ291bnRlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBhYjYzYjlmM2Y2OTFkNzE1YTEwNzE4ODQ5ZmIwMTAx
NDUxY2ZkNjUyLi4yYzc5MDU4OWNiODMzYjIzZjFkNmM5NzVhYWQ4ZTUyNWNjOWJjZmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTg2OSw2ICs4NjksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBcCisgICAgaW5z
cGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBcCkBAIC0x
OTM4LDYgKzE5MzksNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0
aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggXAorICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDb3VudGVycy5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGRiMzBmMjBlODZkZjY4M2Q3MzJkZGMyNGE2YWMzNmQ4NjM0ZGE4MGMuLjhiZTgwZjM2
M2JiYmMyNTU0M2E0ZWI4ZTlmZTA2NTE0Nzg0ZWI0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIz
NjYsNiArMjM2Niw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1l
bnRhdGlvbi5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5jcHAnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMDJiYzNkMzExNTYxN2RlNTFhZjcyZDU3NjQ2OWIz
MzMxMDI3MzNhLi5hZDY1MDMxYTNhYTNjMTZjMTRhNWZlNjYxYTYxZWViYjY2OWIwZTk4IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzE1OTgs
NiArNzE1OTgsMzAgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDb3VudGVycy5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yQ291bnRlcnMuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ29udHJvbGxlci5oIgogCQkJ
CT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA1YmU3MzM1Y2MxNzhlNzk1NThmOTgxYjdhYTgwZDdiYzQyZmQz
Mjk1Li5kODZkNzQxODY5ZWY5YjhhYzgxYTNjZGM5ODY2ZTkwODNkZDNhNTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01ODgy
LDYgKzU4ODIsOCBAQAogCQlGMzE2Mzk2QjEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzMTYzOTY5MTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
ICovOyB9OwogCQlGMzE2Mzk2QzEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzE2
Mzk2QTEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07CiAJ
CUYzMTYzOTZFMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzE2Mzk2RDEz
Mjk0ODc2MDBBNjQ5Q0IgLyogSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovOyB9OworCQlG
MzI1QTQwQTE0RUUzNkZBMDA3MzI0RTIgLyogSW5zcGVjdG9yQ291bnRlcnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMyNUE0MDgxNEVFMzZGQTAw
NzMyNEUyIC8qIEluc3BlY3RvckNvdW50ZXJzLmNwcCAqLzsgfTsKKwkJRjMyNUE0MEIxNEVFMzZG
QTAwNzMyNEUyIC8qIEluc3BlY3RvckNvdW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzI1QTQwOTE0RUUzNkZBMDA3MzI0RTIgLyogSW5zcGVj
dG9yQ291bnRlcnMuaCAqLzsgfTsKIAkJRjMzMzVCRjgxMkUwN0RDMzAwRDMzMDExIC8qIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGMzMzNUJGNjEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcCAqLzsgfTsKIAkJRjMzMzVCRjkxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNv
bnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjMzMzVCRjcxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oICov
OyB9OwogCQlGMzNGMDI4MjEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzNGMDI4MTEyMDk0
N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgKi87IH07CkBAIC0xMjkwMiw2ICsxMjkw
NCw4IEBACiAJCUYzMTYzOTY5MTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMxNjM5NkExMzI5
NDgxQTAwQTY0OUNCIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjMxNjM5NkQxMzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjMy
NUE0MDgxNEVFMzZGQTAwNzMyNEUyIC8qIEluc3BlY3RvckNvdW50ZXJzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNvdW50ZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjMyNUE0MDkxNEVFMzZGQTAwNzMyNEUyIC8qIEluc3Bl
Y3RvckNvdW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rv
ckNvdW50ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzMzM1QkY2MTJFMDdE
QzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMzMzVCRjcxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JDb25zb2xlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMzRjAyODEx
MjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDA5OCw2ICsxNDEwMiw4IEBACiAJCQkJRjNGNUNGMTAxMkVEODFBODAwODRD
NTY5IC8qIEluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCAqLywKIAkJCQkxQzgxQjk1
NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJMUM4
MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLywKKwkJCQlG
MzI1QTQwODE0RUUzNkZBMDA3MzI0RTIgLyogSW5zcGVjdG9yQ291bnRlcnMuY3BwICovLAorCQkJ
CUYzMjVBNDA5MTRFRTM2RkEwMDczMjRFMiAvKiBJbnNwZWN0b3JDb3VudGVycy5oICovLAogCQkJ
CTgyQUIxNzQxMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgKi8sCiAJ
CQkJODJBQjE3NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmggKi8sCiAJ
CQkJN0FCMEIxQkUxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
ICovLApAQCAtMjI1NjIsNiArMjI1NjgsNyBAQAogCQkJCUYzMzM1QkY5MTJFMDdEQzMwMEQzMzAx
MSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRjVDRjEx
MTJFRDgxQTgwMDg0QzU2OSAvKiBJbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjMyNUE0MEIxNEVFMzZGQTAwNzMyNEUyIC8q
IEluc3BlY3RvckNvdW50ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MkFCMTc0NDEyNEI5OUVD
MDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBQjBC
MUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGM0Y1Q0YxMzEyRUQ4MUIzMDA4NEM1NjkgLyogSW5zcGVjdG9yRGF0YWJhc2VJ
bnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjU2MDIsNiArMjU2MDksNyBAQAog
CQkJCTdBMUYyQjUyMTI2QzYxQjIwMDA2QTdFNiAvKiBJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjMzMzVCRjgxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNv
bGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzgxQjk1QjBFOTczMzA4MDAyNjZFMDcg
LyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMzI1QTQwQTE0
RUUzNkZBMDA3MzI0RTIgLyogSW5zcGVjdG9yQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODJBQjE3NDMxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBQjBCMUMwMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjA2MjE1MEY1RjE5MjYwMEEwN0VB
QyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggYTNjMzIw
MTk3NDdiMzQzYjBhNWFkZDY4YmJlMWQ0MDI3OTEyMDUyZi4uNmRlMDczYjA1MjQzNjg1MWRkNDhi
ZDBiMGNiZjdhMzEyNzA1MjI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKICNp
bmNsdWRlICJKU0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgpAQCAtNDQsMTEgKzQ1LDEyIEBAIEpTRXZlbnRMaXN0
ZW5lcjo6SlNFdmVudExpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBw
ZXIsIGJvb2wgaXNBCiAgICAgICAgIG1fanNGdW5jdGlvbi5zZXRNYXlCZU51bGwoKm1faXNvbGF0
ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlvbik7CiAgICAgZWxzZQogICAg
ICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKLQorICAgIEluc3BlY3RvckNvdW50ZXJzOjppbmNyZW1l
bnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpKU0V2ZW50TGlzdGVuZXJDb3VudGVyKTsKIH0K
IAogSlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExpc3RlbmVyKCkKIHsKKyAgICBJbnNwZWN0b3JD
b3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6SlNFdmVudExpc3Rl
bmVyQ291bnRlcik7CiB9CiAKIEpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVK
U0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IDZlMjdlZWIxNjhkN2MzMGJiMWRjMWYyMDE1ZWNlZmFkMTA5OWRiY2EuLjljNTY0NDBjNDhhNDIx
MzM3NjQ5NjU3ZGU0ZTVmOWQ0MjZjZmQzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb3VudGVycy5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgogI2luY2x1ZGUgIlY4RXZlbnQuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXJM
aXN0LmgiCkBAIC01Nyw2ICs1OCw3IEBAIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpWOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcihib29sIGlzQXR0cmlidXRlLCBjb25zdCBXb3JsZENvCiAgICAgLCBt
X2lzQXR0cmlidXRlKGlzQXR0cmlidXRlKQogICAgICwgbV93b3JsZENvbnRleHQod29ybGRDb250
ZXh0KQogeworICAgIEluc3BlY3RvckNvdW50ZXJzOjppbmNyZW1lbnRDb3VudGVyKEluc3BlY3Rv
ckNvdW50ZXJzOjpKU0V2ZW50TGlzdGVuZXJDb3VudGVyKTsKIH0KIAogVjhBYnN0cmFjdEV2ZW50
TGlzdGVuZXI6On5WOEFic3RyYWN0RXZlbnRMaXN0ZW5lcigpCkBAIC02Nyw2ICs2OSw3IEBAIFY4
QWJzdHJhY3RFdmVudExpc3RlbmVyOjp+VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIoKQogICAgICAg
ICBWOEV2ZW50TGlzdGVuZXJMaXN0OjpjbGVhcldyYXBwZXIobGlzdGVuZXIsIG1faXNBdHRyaWJ1
dGUpOwogICAgIH0KICAgICBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKKyAgICBJbnNwZWN0b3JD
b3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6SlNFdmVudExpc3Rl
bmVyQ291bnRlcik7CiB9CiAKIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV2ZW50KiBldmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDhmNGFlYzE1OTQ5OTFmZWQ2OGEzMDUwZDMwZWRjMGEyYzE5
NjFhMWIuLmQ5MzdhZGI5OWE1MWFkMzIzZTUwNjBmNWJjMmJhYTZlZmM0N2I0NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJl
cXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb3VudGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRp
YVF1ZXJ5TGlzdC5oIgpAQCAtNTEwLDYgKzUxMSw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICNp
Zm5kZWYgTkRFQlVHCiAgICAgbV91cGRhdGluZ1N0eWxlU2VsZWN0b3IgPSBmYWxzZTsKICNlbmRp
ZgorICAgIEluc3BlY3RvckNvdW50ZXJzOjppbmNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50
ZXJzOjpEb2N1bWVudENvdW50ZXIpOwogfQogCiBzdGF0aWMgdm9pZCBoaXN0b2dyYW1NdXRhdGlv
bkV2ZW50VXNhZ2UoY29uc3QgdW5zaWduZWQgc2hvcnQmIGxpc3RlbmVyVHlwZXMpCkBAIC01ODYs
NiArNTg4LDggQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgLy8gYXMgd2VsbCBhcyBOb2Rl
LiBTZWUgYSBjb21tZW50IG9uIFRyZWVTY29wZS5oIGZvciB0aGUgcmVhc29uLgogICAgIGlmICho
YXNSYXJlRGF0YSgpKQogICAgICAgICBjbGVhclJhcmVEYXRhKCk7CisKKyAgICBJbnNwZWN0b3JD
b3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9jdW1lbnRDb3Vu
dGVyKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAppbmRleCA5N2E4ZDVlZTg0MzNjYTBjNGE4MDMzZDE0ZjY2NDg5MzhlZDhiMDVmLi5iYjRm
MTM2NGU1NGIwNTE2YzQ5NTBhNjA2ZTNlYzVhMDc4ZjZlNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNvdW50ZXJzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxh
eW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgpAQCAtMTQ4Niw2
ICsxNDg3LDcgQEAgaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1
Y3Rpb25UeXBlIHR5cGUpCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05P
REVfU1RBVElTVElDUykgJiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1
Z2dpbmcoKTsKICNlbmRpZgorICAgIEluc3BlY3RvckNvdW50ZXJzOjppbmNyZW1lbnRDb3VudGVy
KEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA5ZWNmMDAyM2I5YzcwMjgzM2U3OGQ5NTQ2ZDdmOTE2
OTVkNzI2MTlmLi42ZDJlOGYxNTljMDQzNmRlODIxNWJmY2RiZjRiZTQ2ODY4ZjU3ZmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDb3VudGVycy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJM
YWJlbHNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTQwNSw2ICs0MDUsOCBA
QCBOb2RlOjp+Tm9kZSgpCiAKICAgICBpZiAoZG9jKQogICAgICAgICBkb2MtPmd1YXJkRGVyZWYo
KTsKKworICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNv
dW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJ
bk9uZS5jcHAKaW5kZXggNjljMjcwZTliNTBkNmU0ZjdhOTlmYjFkYzkwYjk4OGY0ZWVlMzJkOS4u
YjEyMjMwNDMyMzNmOWQ0NDdhNWQzYWI1NTExMDY2OTU5ZWZiZTYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuY3BwIgorI2luY2x1
ZGUgIkluc3BlY3RvckNvdW50ZXJzLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5j
cHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzMzllZWZmN2MwMWU1OWQyYTJkNzg3
ZWE0NTQ1N2Q3MDE2MDRmYmUwLi40OTFlNjUwNmJhYWM4NWFmYjI5NzExNzAwN2NmYWE0ZjE3OWE4
NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCkBAIC0xMTAsMTMgKzExMCw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAg
T3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gZG9tU3RvcmFnZUFnZW50UHRyKEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
bV9zdGF0ZS5nZXQoKSkpOwogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFn
ZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChk
b21TdG9yYWdlQWdlbnRQdHIucmVsZWFzZSgpKTsKLQotCi0gICAgT3duUHRyPEluc3BlY3Rvck1l
bW9yeUFnZW50Pm1lbW9yeUFnZW50UHRyID0gSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNyZWF0ZSht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIG1fcGFnZSwgbV9kb21B
Z2VudCk7Ci0gICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1lbW9yeUFnZW50ID0gbWVtb3J5QWdl
bnRQdHIuZ2V0KCk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKG1lbW9yeUFnZW50UHRyLnJlbGVhc2Uo
KSk7Ci0KLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbWVtb3J5QWdlbnQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIG1fcGFnZSwgbV9kb21BZ2Vu
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZUFnZW50KSk7CiAKICAgICBP
d25QdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gcmVzb3VyY2VBZ2VudFB0cihJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdl
bnQsIGluc3BlY3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA2OTcwNzdiM2I2
MTcwMTVhOTNhNjc4YTIxOWU3NDIwZjQzMzNlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5jcHAKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRp
b24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNvdW50ZXJzLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2ludCBJbnNwZWN0b3JDb3VudGVyczo6c19jb3VudGVyc1tDb3VudGVy
VHlwZUxlbmd0aF07CisKK2ludCBJbnNwZWN0b3JDb3VudGVyczo6Y291bnRlclZhbHVlKENvdW50
ZXJUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIHNfY291bnRlcnNbdHlwZV07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhNzg0
ZjVhNTU1ZjIwOGNiZjdlNWEyY2U2ODY0YWQ4MzU4NmFlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuaApAQCAtMCwwICsxLDcy
IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3Ry
aWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIEluc3BlY3RvckNvdW50ZXJz
X2gKKyNkZWZpbmUgSW5zcGVjdG9yQ291bnRlcnNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEluc3BlY3RvckNvdW50ZXJzIHsKK3B1YmxpYzoKKyAgICBlbnVtIENvdW50ZXJUeXBl
IHsKKyAgICAgICAgRG9jdW1lbnRDb3VudGVyLAorICAgICAgICBOb2RlQ291bnRlciwKKyAgICAg
ICAgSlNFdmVudExpc3RlbmVyQ291bnRlciwKKyAgICAgICAgQ291bnRlclR5cGVMZW5ndGgKKyAg
ICB9OworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBpbmNyZW1lbnRDb3VudGVyKENvdW50ZXJUeXBl
IHR5cGUpCisgICAgeworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgICsrc19jb3VudGVy
c1t0eXBlXTsKKyNlbmRpZgorICAgIH0KKworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBkZWNyZW1l
bnRDb3VudGVyKENvdW50ZXJUeXBlIHR5cGUpCisgICAgeworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgICAgIC0tc19jb3VudGVyc1t0eXBlXTsKKyNlbmRpZgorICAgIH0KKworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgc3RhdGljIGludCBjb3VudGVyVmFsdWUoQ291bnRlclR5cGUpOwor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgSW5zcGVjdG9yQ291bnRlcnMoKTsKKworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgc3RhdGljIGludCBzX2NvdW50ZXJzW0NvdW50ZXJUeXBlTGVuZ3Ro
XTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRl
ZmluZWQoSW5zcGVjdG9yQ291bnRlcnNfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBkMjNjMWVhMjFkYjhkZjU5YmYx
ZDkwMGZhNDE1MDIzZmU4ZmM3NDc1Li5jOWZkNWZmNDRkMDFjYmE4ZGEyMzFlMWYwZTBmZjljMGE2
ODNjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIklkZW50aWZpZXJzRmFjdG9yeS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvdW50
ZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTE3Nyw3ICsx
NzcsNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxDYWxsRnVuY3Rpb24oY29u
c3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZENhbGxGdW5jdGlvbigpCiB7Ci0gICAgY29sbGVjdERvbUNvdW50ZXJzKCk7CiAg
ICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6RnVuY3Rpb25D
YWxsKTsKIH0KIApAQCAtMTg4LDcgKzE4Nyw2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbERpc3BhdGNoRXZlbnQoY29uc3QgRXZlbnQmIGV2ZW50KQogCiB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQoKQogewotICAgIGNvbGxlY3REb21Db3Vu
dGVycygpOwogICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGU6
OkV2ZW50RGlzcGF0Y2gpOwogfQogCkBAIC0yMzIsNyArMjMwLDYgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwodW5zaWduZWQgaW50IGVuZExpbmUpCiAgICAgaWYg
KCFtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5
IGVudHJ5ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7CiAgICAgICAgIGVudHJ5LmRhdGEtPnNldE51
bWJlcigiZW5kTGluZSIsIGVuZExpbmUpOwotICAgICAgICBjb2xsZWN0RG9tQ291bnRlcnMoKTsK
ICAgICAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFy
c2VIVE1MKTsKICAgICB9CiB9CkBAIC0yNTQsNyArMjUxLDYgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsRmlyZVRpbWVyKGludCB0aW1lcklkKQogCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZEZpcmVUaW1lcigpCiB7Ci0gICAgY29sbGVjdERvbUNvdW50ZXJzKCk7
CiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6VGltZXJG
aXJlKTsKIH0KIApAQCAtMjg1LDcgKzI4MSw2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbEV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlCiAg
ICAgCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEV2YWx1YXRlU2NyaXB0KCkKIHsK
LSAgICBjb2xsZWN0RG9tQ291bnRlcnMoKTsKICAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQo
VGltZWxpbmVSZWNvcmRUeXBlOjpFdmFsdWF0ZVNjcmlwdCk7CiB9CiAKQEAgLTM5NCwyMiArMzg5
LDEzIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SGVhcFNpemVTdGF0aXN0aWMo
SW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpCiAgICAgcmVjb3JkLT5zZXROdW1iZXIoInVzZWRIZWFw
U2l6ZSIsIHVzZWRIZWFwU2l6ZSk7CiAgICAgcmVjb3JkLT5zZXROdW1iZXIoInRvdGFsSGVhcFNp
emUiLCB0b3RhbEhlYXBTaXplKTsKIAotfQotCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmNvbGxlY3REb21Db3VudGVycygpCi17Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKFRp
bWVsaW5lQWdlbnRTdGF0ZTo6aW5jbHVkZU1lbW9yeURldGFpbHMpKQotICAgICAgICByZXR1cm47
Ci0gICAgaWYgKG1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBTdHJpbmcgZXJyb3I7Ci0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBkb21Hcm91cHM7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc3RyaW5nczsKLSAgICBtX21lbW9yeUFnZW50LT5n
ZXRET01Ob2RlQ291bnQoJmVycm9yLCBkb21Hcm91cHMsIHN0cmluZ3MpOwotCi0gICAgaWYgKGRv
bUdyb3VwcykKLSAgICAgICAgbV9yZWNvcmRTdGFjay5sYXN0KCkucmVjb3JkLT5zZXRBcnJheSgi
ZG9tR3JvdXBzIiwgZG9tR3JvdXBzLnJlbGVhc2UoKSk7CisgICAgaWYgKG1fc3RhdGUtPmdldEJv
b2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjppbmNsdWRlTWVtb3J5RGV0YWlscykpIHsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY291bnRlcnMgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOworICAgICAgICBjb3VudGVycy0+c2V0TnVtYmVyKCJub2RlcyIsIEluc3BlY3RvckNv
dW50ZXJzOjpjb3VudGVyVmFsdWUoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKSk7Cisg
ICAgICAgIGNvdW50ZXJzLT5zZXROdW1iZXIoImRvY3VtZW50cyIsIEluc3BlY3RvckNvdW50ZXJz
Ojpjb3VudGVyVmFsdWUoSW5zcGVjdG9yQ291bnRlcnM6OkRvY3VtZW50Q291bnRlcikpOworICAg
ICAgICBjb3VudGVycy0+c2V0TnVtYmVyKCJqc0V2ZW50TGlzdGVuZXJzIiwgSW5zcGVjdG9yQ291
bnRlcnM6OmNvdW50ZXJWYWx1ZShJbnNwZWN0b3JDb3VudGVyczo6SlNFdmVudExpc3RlbmVyQ291
bnRlcikpOworICAgICAgICByZWNvcmQtPnNldE9iamVjdCgiY291bnRlcnMiLCBjb3VudGVycy5y
ZWxlYXNlKCkpOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRD
b21wbGV0ZUN1cnJlbnRSZWNvcmQoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNDI4LDEyICs0MTQs
MTEgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNv
cmQoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIH0KIH0KIAotSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3Rvck1lbW9yeUFnZW50KiBt
ZW1vcnlBZ2VudCkKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3Rh
dGUqIHN0YXRlKQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ+KCJUaW1lbGluZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQogICAgICwgbV9mcm9u
dGVuZCgwKQogICAgICwgbV9pZCgxKQogICAgICwgbV9tYXhDYWxsU3RhY2tEZXB0aCg1KQotICAg
ICwgbV9tZW1vcnlBZ2VudChtZW1vcnlBZ2VudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggZGMwYjllNGY2OTRj
NDk5MTIxNmJlMDFjOTg5NGRhYmVkOTFiZWJlOC4uYzA5Y2Y2NjQwOGI5MDk5NjIwNGEzNmZlYmJj
YzBmMWQwODIxMzQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBFdmVudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwotY2xhc3MgSW5zcGVjdG9y
TWVtb3J5QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdB
Z2VudHM7CiBjbGFzcyBJbnRSZWN0OwpAQCAtNTcsOSArNTYsOSBAQCB0eXBlZGVmIFN0cmluZyBF
cnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+LCBTY3JpcHRHQ0V2ZW50TGlzdGVu
ZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6VGltZWxpbmVDb21tYW5kSGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4g
Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3Rv
clN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1lbW9yeUFnZW50KQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvclRpbWVsaW5lQWdlbnQo
aW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIG1lbW9yeUFnZW50KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRz
LCBzdGF0ZSkpOwogICAgIH0KIAogICAgIH5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CkBAIC0x
NDEsMTEgKzE0MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICB9Owog
ICAgICAgICAKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3Rvck1lbW9yeUFnZW50Kik7CisgICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKIAog
ICAgIHZvaWQgcHVzaEN1cnJlbnRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBj
b25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjayk7CiAgICAgdm9pZCBzZXRI
ZWFwU2l6ZVN0YXRpc3RpYyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7Ci0gICAgdm9pZCBjb2xs
ZWN0RG9tQ291bnRlcnMoKTsKICAgICAgICAgCiAgICAgdm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRS
ZWNvcmQoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGNhcHR1
cmVDYWxsU3RhY2spOwpAQCAtMTcyLDcgKzE3MCw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBW
ZWN0b3I8R0NFdmVudD4gR0NFdmVudHM7CiAgICAgR0NFdmVudHMgbV9nY0V2ZW50czsKICAgICBp
bnQgbV9tYXhDYWxsU3RhY2tEZXB0aDsKLSAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudCogbV9tZW1v
cnlBZ2VudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcwppbmRleCAy
MmZmYzk5OWViYjlkOGU5NTI4M2UwNGI1MDI1ZTc4MmM4ZWFhMDY4Li4wODNiZmM3ZTFiZjgwNGE1
MzJkZDIwNDllYzAxMjlkNTZlYjgwNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCkBAIC01NSw3ICs1NSw3IEBA
IFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzID0gZnVuY3Rpb24odGltZWxpbmVQYW5lbCwg
c2lkZWJhcldpZHRoKQogCiAgICAgLy8gUG9wdWxhdGUgc2lkZWJhcgogICAgIHRoaXMuX2NvdW50
ZXJTaWRlYmFyRWxlbWVudHMgPSBbXTsKLSAgICB0aGlzLl9kb21Hcm91cHMgPSB0aGlzLl9jcmVh
dGVDb3VudGVyU2lkZWJhckVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJET00gZ3JvdXAg
Y291bnQ6IiksIHRydWUpOworICAgIHRoaXMuX2RvY3VtZW50cyA9IHRoaXMuX2NyZWF0ZUNvdW50
ZXJTaWRlYmFyRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvY3VtZW50IGNvdW50OiIp
LCB0cnVlKTsKICAgICB0aGlzLl9kb21Ob2RlcyA9IHRoaXMuX2NyZWF0ZUNvdW50ZXJTaWRlYmFy
RWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRPTSBub2RlIGNvdW50OiIpLCB0cnVlKTsK
ICAgICB0aGlzLl9saXN0ZW5lcnMgPSB0aGlzLl9jcmVhdGVDb3VudGVyU2lkZWJhckVsZW1lbnQo
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmVudCBsaXN0ZW5lciBjb3VudDoiKSwgZmFsc2UpOwog
CkBAIC0xMjIsMjggKzEyMiwxMiBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90
b3R5cGUgPSB7CiAKICAgICBhZGRUaW1saW5lRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIHRpbWUgPSBldmVudC5kYXRhLmVuZFRpbWU7Ci0gICAgICAgIHZhciBkb21H
cm91cHMgPSBldmVudC5kYXRhWyJkb21Hcm91cHMiXTsKLQotICAgICAgICB2YXIgbm9kZUNvdW50
ID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb21Hcm91cHMubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgIHZhciBjb3VudGVycyA9IGRvbUdyb3Vwc1tpXS5ub2RlQ291bnQ7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvdW50ZXJzLmxlbmd0aDsgaisrKQotICAg
ICAgICAgICAgICAgIG5vZGVDb3VudCArPSBjb3VudGVyc1tqXS5jb3VudDsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciBsaXN0ZW5lckNvdW50ID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkb21Hcm91cHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBjb3VudGVycyA9
IGRvbUdyb3Vwc1tpXS5saXN0ZW5lckNvdW50OwotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBjb3VudGVycy5sZW5ndGg7IGorKykKLSAgICAgICAgICAgICAgICBsaXN0ZW5lckNvdW50
ICs9IGNvdW50ZXJzW2pdLmNvdW50OwotICAgICAgICB9Ci0KKyAgICAgICAgdmFyIGNvdW50ZXJz
ID0gZXZlbnQuZGF0YVsiY291bnRlcnMiXTsKICAgICAgICAgdGhpcy5fY291bnRlcnMucHVzaCh7
Ci0gICAgICAgICAgICB0aW1lOiB0aW1lLAotICAgICAgICAgICAgZG9tR3JvdXBDb3VudDogZG9t
R3JvdXBzLmxlbmd0aCwKLSAgICAgICAgICAgIG5vZGVDb3VudDogbm9kZUNvdW50LAotICAgICAg
ICAgICAgbGlzdGVuZXJDb3VudDogbGlzdGVuZXJDb3VudAorICAgICAgICAgICAgdGltZTogZXZl
bnQuZGF0YS5lbmRUaW1lLAorICAgICAgICAgICAgZG9jdW1lbnRDb3VudDogY291bnRlcnMuZG9j
dW1lbnRzLAorICAgICAgICAgICAgbm9kZUNvdW50OiBjb3VudGVycy5ub2RlcywKKyAgICAgICAg
ICAgIGxpc3RlbmVyQ291bnQ6IGNvdW50ZXJzLmpzRXZlbnRMaXN0ZW5lcnMKICAgICAgICAgfSk7
CiAgICAgfSwKIApAQCAtMTU0LDEyICsxMzgsMTIgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRp
c3RpY3MucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jbGVhcigpOwogICAgICAgICB2YXIg
Z3JhcGhIZWlnaHQgPSBNYXRoLnJvdW5kKHRoaXMuX2NhbnZhcy5oZWlnaHQgLyAzKTsKIAotICAg
ICAgICBmdW5jdGlvbiBnZXRHcm91cENvdW50KGVudHJ5KQorICAgICAgICBmdW5jdGlvbiBnZXRE
b2N1bWVudENvdW50KGVudHJ5KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW50cnku
ZG9tR3JvdXBDb3VudDsKKyAgICAgICAgICAgIHJldHVybiBlbnRyeS5kb2N1bWVudENvdW50Owog
ICAgICAgICB9CiAgICAgICAgIHRoaXMuX3NldFZlcnRpY2FsQ2xpcCgwICogZ3JhcGhIZWlnaHQg
KyAyLCBncmFwaEhlaWdodCAtIDQpOwotICAgICAgICB0aGlzLl9kcmF3UG9seWxpbmUoZ2V0R3Jv
dXBDb3VudCwgInJnYmEoMTAwLDAsMCwwLjgpIik7CisgICAgICAgIHRoaXMuX2RyYXdQb2x5bGlu
ZShnZXREb2N1bWVudENvdW50LCAicmdiYSgxMDAsMCwwLDAuOCkiKTsKICAgICAgICAgdGhpcy5f
ZHJhd0JvdHRvbUJvdW5kKCJyZ2JhKDIwLDIwLDIwLDAuOCkiKTsKIAogCkBAIC0yMjUsNyArMjA5
LDcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGktLTsKLSAgICAgICAgdGhpcy5f
ZG9tR3JvdXBzLl92YWx1ZS50ZXh0Q29udGVudCA9IHRoaXMuX2NvdW50ZXJzW2ldLmRvbUdyb3Vw
Q291bnQ7CisgICAgICAgIHRoaXMuX2RvY3VtZW50cy5fdmFsdWUudGV4dENvbnRlbnQgPSB0aGlz
Ll9jb3VudGVyc1tpXS5kb2N1bWVudENvdW50OwogICAgICAgICB0aGlzLl9kb21Ob2Rlcy5fdmFs
dWUudGV4dENvbnRlbnQgPSB0aGlzLl9jb3VudGVyc1tpXS5ub2RlQ291bnQ7CiAgICAgICAgIHRo
aXMuX2xpc3RlbmVycy5fdmFsdWUudGV4dENvbnRlbnQgPSB0aGlzLl9jb3VudGVyc1tpXS5saXN0
ZW5lckNvdW50OwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggNjFmYWQ3M2YwODRlODQ3MzYzMGUyNGVlMDIy
M2FlYzI0MmZjMDlmZi4uM2RhYjBmYTMyNmJjYTE0MjBhZTVjMmRlMjA3YzgyMTQ5ZGY0ODE3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQ
YW5lbC5qcwpAQCAtNDUxLDcgKzQ1MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKGV2ZW50
LmRhdGEsIHRoaXMuX3Jvb3RSZWNvcmQpOwogICAgICAgICB0aGlzLl9zY2hlZHVsZVJlZnJlc2go
ZmFsc2UpOwogCi0gICAgICAgIGlmICh0aGlzLl9tZW1vcnlTdGF0aXN0aWNzICYmIGV2ZW50LmRh
dGFbImRvbUdyb3VwcyJdKQorICAgICAgICBpZiAodGhpcy5fbWVtb3J5U3RhdGlzdGljcyAmJiBl
dmVudC5kYXRhWyJjb3VudGVycyJdKQogICAgICAgICAgICAgdGhpcy5fbWVtb3J5U3RhdGlzdGlj
cy5hZGRUaW1saW5lRXZlbnQoZXZlbnQpOwogICAgIH0sCiAK
</data>
<flag name="review"
          id="129685"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>