<?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>62955</bug_id>
          
          <creation_ts>2011-06-19 13:49:04 -0700</creation_ts>
          <short_desc>RefPtr misused as argument type in a few classes</short_desc>
          <delta_ts>2011-06-23 14:30:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>63129</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>eric</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>423394</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-19 13:49:04 -0700</bug_when>
    <thetext>RefPtr misused as argument type in a few classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423396</commentid>
    <comment_count>1</comment_count>
      <attachid>97727</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-19 14:02:10 -0700</bug_when>
    <thetext>Created attachment 97727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423397</commentid>
    <comment_count>2</comment_count>
      <attachid>97727</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-19 14:07:36 -0700</bug_when>
    <thetext>Comment on attachment 97727
Patch

Clearing flags on attachment: 97727

Committed r89223: &lt;http://trac.webkit.org/changeset/89223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423398</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-19 14:07:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423409</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-19 17:57:01 -0700</bug_when>
    <thetext>This patch appears to have broken builds on almost all ports/platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423421</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-06-19 19:26:54 -0700</bug_when>
    <thetext>Rolled out in r89224 due to the mass breakage that was caused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423423</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-19 19:33:18 -0700</bug_when>
    <thetext>Oops, sorry. Thanks for rolling it out.

No big rush to fix these, I guess I’ll do it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423425</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-19 19:36:14 -0700</bug_when>
    <thetext>Here&apos;s error:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Debug%20%28Build%29/builds/831/steps/compile-webkit/logs/stdio

InspectorBackendDispatcher.cpp was failing to compile because InspectorBackendDispatcher::CSS_setPropertyText was passing RefPtr to setPropertyText, which now takes a raw pointer.  InspectorBackendDispatcher.cpp is generated by CodeGeneratorInspector.pm and the function called typeTraits seems to be responsible for generating type-specific argument but I couldn&apos;t figure out how to fix it.  If anything the code that generated InspectorBackendDispatcher::CSS_setPropertyText is around line 460 in CodeGeneratorInspector.pm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423426</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-19 19:39:29 -0700</bug_when>
    <thetext>I didn’t realize there was a code generator for the inspector. It’s not urgent to fix this. I can land all the non-inspector parts of this some time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423473</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-19 22:06:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I didn’t realize there was a code generator for the inspector. It’s not urgent to fix this. I can land all the non-inspector parts of this some time.

The inspector also has its very own cookie parser, and javascript object model... just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424926</commentid>
    <comment_count>10</comment_count>
      <attachid>98091</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-21 18:01:48 -0700</bug_when>
    <thetext>Created attachment 98091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424927</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-21 18:02:36 -0700</bug_when>
    <thetext>Removed the inspector part of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424968</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-21 19:35:25 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 98091:

fast/forms/checkValidity-cancel.html bug 63111 (author: tkent@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424969</commentid>
    <comment_count>13</comment_count>
      <attachid>98091</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-21 19:36:58 -0700</bug_when>
    <thetext>Comment on attachment 98091
Patch

Clearing flags on attachment: 98091

Committed r89402: &lt;http://trac.webkit.org/changeset/89402&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424970</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-21 19:37:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425141</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-06-22 04:16:15 -0700</bug_when>
    <thetext>It made 6 tests crash: http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20%28Tests%29/r89403%20%2830612%29/results.html

and rolled out by http://trac.webkit.org/changeset/89420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425228</commentid>
    <comment_count>16</comment_count>
      <attachid>98091</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 07:51:40 -0700</bug_when>
    <thetext>Comment on attachment 98091
Patch

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

&gt; Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp:268
&gt; -void WorkerThreadableWebSocketChannel::Bridge::mainThreadCreateWebSocketChannel(ScriptExecutionContext* context, Bridge* thisPtr, RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; clientWrapper, const String&amp; taskMode, const KURL&amp; url, const String&amp; protocol)
&gt; +void WorkerThreadableWebSocketChannel::Bridge::mainThreadCreateWebSocketChannel(ScriptExecutionContext* context, Bridge* thisPtr, PassRefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; clientWrapper, const String&amp; taskMode, const KURL&amp; url, const String&amp; protocol)

Now I see the problem.  clientWrapper is passed to Peer::create and createCallbackTask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425297</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-22 09:29:00 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; +void WorkerThreadableWebSocketChannel::Bridge::mainThreadCreateWebSocketChannel(ScriptExecutionContext* context, Bridge* thisPtr, PassRefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; clientWrapper, const String&amp; taskMode, const KURL&amp; url, const String&amp; protocol)
&gt; 
&gt; Now I see the problem.  clientWrapper is passed to Peer::create and createCallbackTask.

So that function needs to use the prp idiom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425298</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-22 09:29:23 -0700</bug_when>
    <thetext>Anyone know why the commit-bot and the cr-linux EWS bot did not catch that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425302</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 09:34:24 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Anyone know why the commit-bot and the cr-linux EWS bot did not catch that?

commit-queue uses Chromium Linux bot but Chromium disables workers&apos; tests in DRT because they require multiple processes.  commit-queue also won&apos;t catch any JSC regressions because Chromium uses V8 although I had never seen JSC folks using commit-queue before the switch anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425304</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-22 09:35:48 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; I had never seen JSC folks using commit-queue before the switch anyway.

What? If by &quot;JSC folks&quot; you mean &quot;anyone not working on Chromium&quot; then there have been 100s of JSC folks using commit-queue.

I guess you mean people working directly on the JavaScript engine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425307</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 09:39:21 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; I had never seen JSC folks using commit-queue before the switch anyway.
&gt; 
&gt; What? If by &quot;JSC folks&quot; you mean &quot;anyone not working on Chromium&quot; then there have been 100s of JSC folks using commit-queue.
&gt; 
&gt; I guess you mean people working directly on the JavaScript engine.

I meant people working on JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426393</commentid>
    <comment_count>22</comment_count>
      <attachid>98385</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-23 13:09:59 -0700</bug_when>
    <thetext>Created attachment 98385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426395</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-23 13:10:44 -0700</bug_when>
    <thetext>New patch fixes the prp mistake in WorkerThreadableWebSocketChannel::Bridge::mainThreadCreateWebSocketChannel that Ryosuke spotted for me and is the reason this broke the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426468</commentid>
    <comment_count>24</comment_count>
      <attachid>98385</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 14:30:29 -0700</bug_when>
    <thetext>Comment on attachment 98385
Patch

Clearing flags on attachment: 98385

Committed r89613: &lt;http://trac.webkit.org/changeset/89613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426469</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 14:30:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97727</attachid>
            <date>2011-06-19 14:02:10 -0700</date>
            <delta_ts>2011-06-21 18:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62955-20110619140208.patch</filename>
            <type>text/plain</type>
            <size>34027</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjIyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMDYtMTkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZlB0ciBtaXN1c2VkIGFzIGFyZ3VtZW50IHR5cGUgaW4gYSBmZXcg
Y2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI5NTUKKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zlckl0ZW0pOgorICAgICAgICAqIGRv
bS9EYXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1zOjpEYXRhVHJhbnNmZXJJdGVt
cyk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmg6CisgICAgICAgICogZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFkZFByb2ZpbGVJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjppbnNwZWN0b3JTdHls
ZUZvcklkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlbWVtYmVy
SW5zcGVjdG9yU3R5bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
Lmg6CisgICAgICAgICogcGFnZS9XZWJLaXRBbmltYXRpb25MaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEFuaW1hdGlvbkxpc3Q6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBbmltYXRpb25MaXN0OjppbnNlcnRBbmltYXRpb24pOgorICAgICAgICAqIHBhZ2UvV2Vi
S2l0QW5pbWF0aW9uTGlzdC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OlNWR0Zp
bHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YWRkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0
UmVmZXJlbmNlcyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oOgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1l
c3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkQ2xvc2VDYWxsYmFjayk6CisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNldFdlYlNvY2tldENo
YW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAq
IHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAg
VXNlIFBhc3NSZWZQdHIgb3IgcmF3IHBvaW50ZXIgYXMgYXBwcm9wcmlhdGUgZm9yIFJlZlB0ciBh
cmd1bWVudHMuCisKIDIwMTEtMDYtMTkgIFVuYSBTYWJvdmljICA8dW5hLnNhYm92aWNAcGFsbS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCShyZXZpc2lvbiA4OTE4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBjaGFyIERhdGFUcmFuc2Zlckl0ZW06
OmtpbmRTdHJpbmdbXSA9ICJzdHJpbmciOwogY29uc3QgY2hhciBEYXRhVHJhbnNmZXJJdGVtOjpr
aW5kRmlsZVtdID0gImZpbGUiOwogCi1EYXRhVHJhbnNmZXJJdGVtOjpEYXRhVHJhbnNmZXJJdGVt
KFJlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK0RhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zlckl0ZW0oUGFzc1JlZlB0cjxD
bGlwYm9hcmQ+IG93bmVyLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkK
ICAgICA6IG1fb3duZXIob3duZXIpCiAgICAgLCBtX2tpbmQoa2luZCkKICAgICAsIG1fdHlwZSh0
eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCShyZXZpc2lvbiA4
OTE4MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxC
bG9iPiBnZXRBc0ZpbGUoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBEYXRhVHJhbnNmZXJJdGVt
KFJlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgRGF0YVRyYW5zZmVySXRlbShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3du
ZXIsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBDbGlwYm9h
cmQqIG93bmVyKCk7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtcy5jcHAJKHJldmlzaW9uIDg5MTgyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLURhdGFUcmFuc2Zlckl0ZW1zOjpEYXRhVHJhbnNmZXJJdGVt
cyhSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCitEYXRhVHJhbnNmZXJJdGVtczo6RGF0YVRyYW5zZmVySXRlbXMoUGFzc1JlZlB0cjxD
bGlwYm9hcmQ+IGNsaXBib2FyZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAg
ICA6IG1fb3duZXIoY2xpcGJvYXJkKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbXMuaAkocmV2aXNpb24gODkxODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgRGF0YVRyYW5zZmVySXRlbXMoUmVmUHRyPENsaXBib2FyZD4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKKyAgICBEYXRhVHJhbnNmZXJJdGVtcyhQYXNzUmVmUHRyPENsaXBib2Fy
ZD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogcHJvdGVjdGVkOgogICAgIFJlZlB0cjxD
bGlwYm9hcmQ+IG1fb3duZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gODkxODIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5
LDggKzQ1OSwxMCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0CiAg
ICAgcmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyhzdGF0aWNfY2FzdDxUZXh0Kj4o
bm9kZSksIHBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBwb3NpdGlvbi5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFs
YW5jZVdoaXRlc3BhY2VPblRleHRTdWJzdHJpbmcoUmVmUHRyPFRleHQ+IHRleHROb2RlLCBpbnQg
c3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCit2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpy
ZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vic3RyaW5nKFBhc3NSZWZQdHI8VGV4dD4gcHJwVGV4
dE5vZGUsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKIHsKKyAgICBSZWZQdHI8VGV4
dD4gdGV4dE5vZGUgPSBwcnBUZXh0Tm9kZTsKKwogICAgIFN0cmluZyB0ZXh0ID0gdGV4dE5vZGUt
PmRhdGEoKTsKICAgICBBU1NFUlQoIXRleHQuaXNFbXB0eSgpKTsKIApAQCAtNDg4LDcgKzQ5MCw3
IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0VuZE9m
UGFyYWdyYXBoKHZpc2libGVEb3duc3RyZWFtUG9zKSB8fCAodW5zaWduZWQpZG93bnN0cmVhbSA9
PSB0ZXh0Lmxlbmd0aCgpKTsKICAgICAKICAgICBpZiAoc3RyaW5nICE9IHJlYmFsYW5jZWRTdHJp
bmcpCi0gICAgICAgIHJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnModGV4dE5vZGUs
IHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworICAgICAgICByZXBsYWNlVGV4
dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKHRleHROb2RlLnJlbGVhc2UoKSwgdXBzdHJlYW0sIGxl
bmd0aCwgcmViYWxhbmNlZFN0cmluZyk7CiB9CiAKIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OnByZXBhcmVXaGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KFBvc2l0aW9uJiBwb3NpdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJ
KHJldmlzaW9uIDg5MTgyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMoUGFzc1JlZlB0cjxFbGVtZW50PiwgUGFzc1Jl
ZlB0cjxFbGVtZW50Pik7CiAgICAgdm9pZCByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7CiAgICAgdm9p
ZCByZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29uc3QgUG9zaXRpb24mKTsKLSAgICB2b2lkIHJlYmFs
YW5jZVdoaXRlc3BhY2VPblRleHRTdWJzdHJpbmcoUmVmUHRyPFRleHQ+LCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBlbmRPZmZzZXQpOworICAgIHZvaWQgcmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1
YnN0cmluZyhQYXNzUmVmUHRyPFRleHQ+LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQp
OwogICAgIHZvaWQgcHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9zaXRpb24m
KTsKICAgICBib29sIGNhblJlYmFsYW5jZShjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogICAgIGJv
b2wgc2hvdWxkUmViYWxhbmNlTGVhZGluZ1doaXRlc3BhY2VGb3IoY29uc3QgU3RyaW5nJikgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAJKHJldmlzaW9uIDg5MTgyKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXgKICAgICAgICAgKmVycm9yU3RyaW5n
ID0gIkludGVybmFsIGVycm9yIHNldHRpbmcgc3R5bGUgc2hlZXQgdGV4dCI7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3Bl
cnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0
eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGZ1bGxTdHls
ZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0
ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJ
ZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0
eSgpKTsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9w
ZXJ0eVRleHQoCiAgICAgICAgICpyZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9i
amVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoY29tcG91bmRJZCkp
OwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJ
ZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBmdWxsU3R5bGVJZCwgaW50IHBy
b3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3Vs
dCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBB
U1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFCiAgICAgICAgICpyZXN1bHQgPSBpbnNw
ZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQt
PnN0eWxlRm9ySWQoY29tcG91bmRJZCkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojpz
ZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1
bGVTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCogZnVs
bFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxSdWxlSWQpOwog
ICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgJKHJldmlzaW9uIDg5MTgyKQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDkgKzY4LDkgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKICAgICB2b2lkIHNldFN0
eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNv
bnN0IFN0cmluZyYgdGV4dCk7Ci0gICAgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5k
ZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiByZXN1bHQpOwotICAgIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgs
IGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7Ci0gICAgdm9p
ZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIElu
c3BlY3Rvck9iamVjdCogc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYg
dGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwor
ICAgIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3JPYmplY3QqIHN0
eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiByZXN1bHQpOworICAgIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwg
SW5zcGVjdG9yT2JqZWN0KiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyos
IGNvbnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlSW5zdHJ1bWVudGF0aW9uLmgJKHJldmlzaW9uIDg5MTgyKQorKysgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtOTYsNyArOTYsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRQcm9maWxlKFBhZ2UqIHBhZ2UsIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBwcm9maWxlLCBQ
YXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxlKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8U2Ny
aXB0UHJvZmlsZT4gcHJvZmlsZSwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
aykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcAkocmV2aXNpb24gODkxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk4
LDcgKzY5OCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFAKICAg
ICAgICAgcHJvZmlsZXJBZ2VudC0+YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRp
dGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkUHJvZmlsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUsIFBhc3NSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
UHJvZmlsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFz
c1JlZlB0cjxTY3JpcHRQcm9maWxlPiBwcm9maWxlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKQogewogICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxl
ckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKSB7
CiAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+
YXQoMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCShyZXZpc2lvbiA4OTE4MikKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUw
LDcgKzE1MCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
ICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShQYWdlKiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOwotICAgIHN0YXRpYyB2b2lkIGFkZFByb2ZpbGUoUGFnZSosIFJlZlB0cjxTY3Jp
cHRQcm9maWxlPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICBzdGF0aWMgdm9p
ZCBhZGRQcm9maWxlKFBhZ2UqLCBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4pOwogICAgIHN0YXRpYyBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0
aWF0ZWRQcm9maWxlTmFtZShQYWdlKiwgYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKTsKICAg
ICBzdGF0aWMgYm9vbCBwcm9maWxlckVuYWJsZWQoUGFnZSopOwogI2VuZGlmCkBAIC0yNzgsNyAr
Mjc4LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAg
IHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICBzdGF0aWMgdm9pZCBhZGRQcm9maWxlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4pOworICAgIHN0YXRpYyB2b2lkIGFkZFByb2ZpbGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4pOwogICAgIHN0YXRpYyBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGJvb2wgaW5jcmVtZW50UHJv
ZmlsZU51bWJlcik7CiAgICAgc3RhdGljIGJvb2wgcHJvZmlsZXJFbmFibGVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAkocmV2aXNpb24gODkxODIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNw
ZWN0b3JQcm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudCosIFBhZ2UqLCBJbnNwZWN0b3JTdGF0ZSopOwogICAgIHZpcnR1YWwgfklu
c3BlY3RvclByb2ZpbGVyQWdlbnQoKTsKIAotICAgIHZvaWQgYWRkUHJvZmlsZShQYXNzUmVmUHRy
PFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKTsKKyAgICB2b2lkIGFkZFByb2ZpbGUoUGFzc1JlZlB0cjxTY3JpcHRQ
cm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwog
ICAgIHZvaWQgYWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFNj
cmlwdFByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCk7CiAgICAgdm9pZCBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OwogICAgIHZvaWQgY29sbGVjdEdhcmJhZ2UoRXJyb3JTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAJKHJldmlzaW9u
IDg5MTgyKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzUsMTcgKzg3NSwxNyBAQCBQYXNzUmVmUHRyPEluc3Bl
Y3RvclN0eWxlPiBJbnNwZWN0b3JTdHlsCiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBJbnNwZWN0b3JTdHlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2luc3BlY3RvclN0
eWxlcy5maW5kKHN0eWxlKTsKLSAgICBpZiAoaXQgPT0gbV9pbnNwZWN0b3JTdHlsZXMuZW5kKCkp
IHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3Bl
Y3RvclN0eWxlOjpjcmVhdGUoaWQsIHN0eWxlLCB0aGlzKTsKKyAgICBpZiAoUmVmUHRyPEluc3Bl
Y3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IG1faW5zcGVjdG9yU3R5bGVzLmdldChzdHlsZSkp
CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS5yZWxlYXNlKCk7Ci0gICAgfQotICAgIHJl
dHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuIEluc3BlY3RvclN0eWxlOjpjcmVhdGUoaWQs
IHN0eWxlLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZW1lbWJlcklu
c3BlY3RvclN0eWxlKFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUpCit2b2lk
IEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlbWVtYmVySW5zcGVjdG9yU3R5bGUoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JTdHlsZT4gcHJwSW5zcGVjdG9yU3R5bGUpCiB7Ci0gICAgbV9pbnNwZWN0b3JTdHls
ZXMuc2V0KGluc3BlY3RvclN0eWxlLT5jc3NTdHlsZSgpLCBpbnNwZWN0b3JTdHlsZSk7CisgICAg
UmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IHBycEluc3BlY3RvclN0eWxl
OworICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc1N0eWxlID0gaW5zcGVjdG9yU3R5bGUtPmNz
c1N0eWxlKCk7CisgICAgbV9pbnNwZWN0b3JTdHlsZXMuc2V0KGNzc1N0eWxlLCBpbnNwZWN0b3JT
dHlsZS5yZWxlYXNlKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmZvcmdldElu
c3BlY3RvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCShyZXZpc2lvbiA4OTE4
MikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTSWQgewogcHVi
bGljOgogICAgIEluc3BlY3RvckNTU0lkKCkgeyB9CiAKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JD
U1NJZChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKKyAgICBleHBsaWNpdCBJbnNwZWN0
b3JDU1NJZChJbnNwZWN0b3JPYmplY3QqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1
ZS0+Z2V0U3RyaW5nKCJzdHlsZVNoZWV0SWQiLCAmbV9zdHlsZVNoZWV0SWQpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTg5LDcgKzE4OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBlbnN1cmVQYXJzZWREYXRhUmVhZHkoKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9y
Q1NTSWQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtZW1iZXJJbnNwZWN0b3JTdHlsZShSZWZQdHI8
SW5zcGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtZW1i
ZXJJbnNwZWN0b3JTdHlsZShQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlPik7CiAgICAgdmlydHVh
bCB2b2lkIGZvcmdldEluc3BlY3RvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKTsK
IAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkgZnJpZW5kIGNsYXNzIEluc3BlY3RvclN0eWxlLgpA
QCAtMjM4LDcgKzIzOCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHJ1bGVJ
bmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgZW5zdXJlUGFyc2VkRGF0YVJlYWR5KCk7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZUZvcklkKGNvbnN0IEluc3BlY3Rv
ckNTU0lkJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbWVtYmVySW5zcGVjdG9yU3R5bGUoUmVmUHRy
PEluc3BlY3RvclN0eWxlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlbWVtYmVySW5zcGVjdG9y
U3R5bGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZT4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBm
b3JnZXRJbnNwZWN0b3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikgeyB9CiAKICAgICAvLyBB
bHNvIGFjY2Vzc2VkIGJ5IGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JTdHlsZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2ViS2l0QW5pbWF0aW9uTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXRBbmltYXRpb25MaXN0LmNwcAkocmV2aXNpb24gODkxODIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw5ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0QW5pbWF0aW9uTGlzdC5oIgogCi0jaW5jbHVkZSAiQW5pbWF0aW9uLmgiCi0jaW5jbHVk
ZSAiQW5pbWF0aW9uQmFzZS5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0QW5pbWF0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDEyICs1OCwx
MiBAQCB2b2lkIFdlYktpdEFuaW1hdGlvbkxpc3Q6OmRlbGV0ZUFuaW1hdGlvCiAgICAgbV9hbmlt
YXRpb25zLnJlbW92ZShpbmRleCk7CiB9CiAKLXZvaWQgV2ViS2l0QW5pbWF0aW9uTGlzdDo6YXBw
ZW5kKFJlZlB0cjxXZWJLaXRBbmltYXRpb24+IGFuaW1hdGlvbikKK3ZvaWQgV2ViS2l0QW5pbWF0
aW9uTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPiBhbmltYXRpb24pCiB7
CiAgICAgbV9hbmltYXRpb25zLmFwcGVuZChhbmltYXRpb24pOwogfQogCi11bnNpZ25lZCBXZWJL
aXRBbmltYXRpb25MaXN0OjppbnNlcnRBbmltYXRpb24oUmVmUHRyPFdlYktpdEFuaW1hdGlvbj4g
YW5pbWF0aW9uLCB1bnNpZ25lZCBpbmRleCkKK3Vuc2lnbmVkIFdlYktpdEFuaW1hdGlvbkxpc3Q6
Omluc2VydEFuaW1hdGlvbihQYXNzUmVmUHRyPFdlYktpdEFuaW1hdGlvbj4gYW5pbWF0aW9uLCB1
bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuIDA7
CkBAIC03OSw0ICs3NiwzIEBAIHVuc2lnbmVkIFdlYktpdEFuaW1hdGlvbkxpc3Q6Omluc2VydEFu
aW0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuaAkocmV2aXNpb24gODkxODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTYg
KzM5LDE2IEBAIGNsYXNzIFdlYktpdEFuaW1hdGlvbkxpc3QgOiBwdWJsaWMgUmVmQ28KIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRBbmltYXRpb25MaXN0PiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRBbmltYXRpb25MaXN0KCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdEFuaW1hdGlvbkxpc3QpOwogICAg
IH0KICAgICB+V2ViS2l0QW5pbWF0aW9uTGlzdCgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7CiAgICAgV2ViS2l0QW5pbWF0aW9uKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKIAotICAg
IHVuc2lnbmVkIGluc2VydEFuaW1hdGlvbihSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPiwgdW5zaWdu
ZWQgaW5kZXgpOworICAgIHVuc2lnbmVkIGluc2VydEFuaW1hdGlvbihQYXNzUmVmUHRyPFdlYktp
dEFuaW1hdGlvbj4sIHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIGRlbGV0ZUFuaW1hdGlvbih1
bnNpZ25lZCBpbmRleCk7Ci0gICAgdm9pZCBhcHBlbmQoUmVmUHRyPFdlYktpdEFuaW1hdGlvbj4p
OworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPik7CiAKIHByaXZh
dGU6CiAgICAgV2ViS2l0QW5pbWF0aW9uTGlzdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDg5MTgy
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDE0ICszNCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyKiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4gaW1hZ2Us
IGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCitGRUlt
YWdlOjpGRUltYWdlKEZpbHRlciogZmlsdGVyLCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykKICAgICA6IEZp
bHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX2ltYWdlKGltYWdlKQogICAgICwgbV9wcmVzZXJ2
ZUFzcGVjdFJhdGlvKHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7CiB9CiAKLVBhc3NSZWZQdHI8RkVJ
bWFnZT4gRkVJbWFnZTo6Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBSZWZQdHI8SW1hZ2U+IGltYWdl
LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorUGFz
c1JlZlB0cjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIFBhc3NSZWZQ
dHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVJbWFnZShmaWx0ZXIsIGlt
YWdlLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCShyZXZpc2lvbiA4OTE4MikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBJbWFnZTsKIAogY2xhc3MgRkVJbWFnZSA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZF
SW1hZ2U+IGNyZWF0ZShGaWx0ZXIqLCBSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVJbWFnZT4gY3JlYXRlKEZpbHRl
ciosIFBhc3NSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CiAK
ICAgICB2b2lkIHNldEFic29sdXRlU3VicmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVT
dWJyZWdpb24pIHsgbV9hYnNvbHV0ZVN1YnJlZ2lvbiA9IGFic29sdXRlU3VicmVnaW9uOyB9CiAK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAgICAg
CiBwcml2YXRlOgotICAgIEZFSW1hZ2UoRmlsdGVyKiwgUmVmUHRyPEltYWdlPiwgY29uc3QgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyYpOworICAgIEZFSW1hZ2UoRmlsdGVyKiwgUGFzc1JlZlB0cjxJ
bWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKIAogICAgIFJlZlB0cjxJbWFn
ZT4gbV9pbWFnZTsKICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIG1fcHJlc2VydmVBc3BlY3RS
YXRpbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCShyZXZpc2lvbiA4OTE4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwxNCArMzIsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRmls
dGVyQnVpbGRlcjo6U1ZHRmlsdGVyQnVpbGRlcihGaWx0ZXIqIGZpbHRlcikKLSAgICA6IG1fbGFz
dEVmZmVjdCgwKQogewogICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUdyYXBoaWM6OmVm
ZmVjdE5hbWUoKSwgU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIG1fYnVpbHRp
bkVmZmVjdHMuYWRkKFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCksIFNvdXJjZUFscGhhOjpjcmVh
dGUoZmlsdGVyKSk7CiAgICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKIH0KIAotdm9pZCBTVkdGaWx0
ZXJCdWlsZGVyOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0KQordm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphZGQoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkKIHsKICAgICBpZiAoaWQuaXNF
bXB0eSgpKSB7CiAgICAgICAgIG1fbGFzdEVmZmVjdCA9IGVmZmVjdDsKQEAgLTY4LDIwICs2Nywy
MSBAQCBGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjCiAgICAgcmV0dXJu
IG1fbmFtZWRFZmZlY3RzLmdldChpZCkuZ2V0KCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyQnVpbGRl
cjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdFJlZmVyZW5jZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxk
ZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gcHJwRWZmZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBwcnBFZmZlY3Q7CisKICAgICAvLyBUaGUgZWZmZWN0IG11c3QgYmUg
YSBuZXdseSBjcmVhdGVkIGZpbHRlciBlZmZlY3QuCi0gICAgQVNTRVJUKCFtX2VmZmVjdFJlZmVy
ZW5jZXMuY29udGFpbnMoZWZmZWN0UmVmZXJlbmNlKSk7CisgICAgQVNTRVJUKCFtX2VmZmVjdFJl
ZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0KSk7CiAgICAgQVNTRVJUKG9iamVjdCAmJiAhbV9lZmZl
Y3RSZW5kZXJlci5jb250YWlucyhvYmplY3QpKTsKLSAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRk
KGVmZmVjdFJlZmVyZW5jZSwgRmlsdGVyRWZmZWN0U2V0KCkpOworICAgIG1fZWZmZWN0UmVmZXJl
bmNlcy5hZGQoZWZmZWN0LCBGaWx0ZXJFZmZlY3RTZXQoKSk7CiAKLSAgICBGaWx0ZXJFZmZlY3Qq
IGVmZmVjdCA9IGVmZmVjdFJlZmVyZW5jZS5nZXQoKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZklu
cHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuc2l6ZSgpOwogCiAgICAgLy8gSXQg
aXMgbm90IHBvc3NpYmxlIHRvIGFkZCB0aGUgc2FtZSB2YWx1ZSB0byBhIHNldCB0d2ljZS4KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkKLSAg
ICAgICAgZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0KGkpKS5hZGQoZWZmZWN0
KTsKLSAgICBtX2VmZmVjdFJlbmRlcmVyLmFkZChvYmplY3QsIGVmZmVjdFJlZmVyZW5jZS5nZXQo
KSk7CisgICAgICAgIGVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LT5pbnB1dEVmZmVjdChpKSkuYWRk
KGVmZmVjdC5nZXQoKSk7CisgICAgbV9lZmZlY3RSZW5kZXJlci5hZGQob2JqZWN0LCBlZmZlY3Qu
Z2V0KCkpOwogfQogCiB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cygpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oCShyZXZpc2lvbiA4OTE4MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIg
KzM5LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZpbHRlckJ1aWxk
ZXI+IGNyZWF0ZShGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZpbHRl
ckJ1aWxkZXIoZmlsdGVyKSk7IH0KIAotICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCk7CisgICAgdm9pZCBhZGQoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKIAogICAgIEZpbHRlckVm
ZmVjdCogZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICBG
aWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0
KCk7IH0KIAotICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+LCBSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFwcGVuZEVmZmVjdFRvRWZm
ZWN0UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4sIFJlbmRlck9iamVjdCopOwog
CiAgICAgaW5saW5lIEZpbHRlckVmZmVjdFNldCYgZWZmZWN0UmVmZXJlbmNlcyhGaWx0ZXJFZmZl
Y3QqIGVmZmVjdCkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuY3BwCShyZXZpc2lvbiA4OTE4MikKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDI4ICsxNDQsMjggQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYQogICAgICAgICAoKml0ZXIpLT5wZXJmb3JtVGFzaygwKTsKIH0KIAotdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3RDYWxsYmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiB3cmFwcGVyKQordm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIq
IHdyYXBwZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4dCk7CiAgICAg
aWYgKHdyYXBwZXItPm1fY2xpZW50KQogICAgICAgICB3cmFwcGVyLT5tX2NsaWVudC0+ZGlkQ29u
bmVjdCgpOwogfQogCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6ZGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3cmFw
cGVyLCBTdHJpbmcgbWVzc2FnZSkKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogd3Jh
cHBlciwgU3RyaW5nIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29u
dGV4dCk7CiAgICAgaWYgKHdyYXBwZXItPm1fY2xpZW50KQogICAgICAgICB3cmFwcGVyLT5tX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2VDYWxs
YmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3cmFwcGVyKQordm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxi
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlciogd3JhcHBlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsICFjb250ZXh0KTsKICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdyYXBw
ZXItPm1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKIH0KIAotdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJhY2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZm
ZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pCit2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIqIHdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
IWNvbnRleHQpOwogICAgIGlmICh3cmFwcGVyLT5tX2NsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAkocmV2aXNpb24gODkxODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MywxMCArNzMsMTAgQEAgcHJvdGVjdGVkOgogICAgIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcihXZWJTb2NrZXRDaGFubmVsQ2xpZW50
Kik7CiAKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRDb25uZWN0Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgU3RyaW5nIG1lc3NhZ2UpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4sIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDb25uZWN0Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciopOworICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciosIFN0cmluZyBtZXNzYWdlKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKik7CisgICAg
c3RhdGljIHZvaWQgZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiwgdW5zaWduZWQgbG9uZyB1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRz
aGFrZUNvbXBsZXRpb25TdGF0dXMpOwogCiAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9j
bGllbnQ7CiAgICAgYm9vbCBtX3N5bmNNZXRob2REb25lOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDg5MTgyKQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNCw3ICsxMTQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpy
CiAgICAgICAgIG1fYnJpZGdlLT5yZXN1bWUoKTsKIH0KIAotV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OlBlZXIoUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclBy
b3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCitXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVy
UHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpCiAgICAgOiBtX3dvcmtlckNsaWVudFdyYXBwZXIoY2xpZW50V3JhcHBlcikKICAgICAsIG1f
bG9hZGVyUHJveHkobG9hZGVyUHJveHkpCiAgICAgLCBtX21haW5XZWJTb2NrZXRDaGFubmVsKFdl
YlNvY2tldENoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCB0aGlzLCB1cmwsIHByb3RvY29sKSkKQEAg
LTI1OCwxNCArMjU4LDE0IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlAKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRDbG9zZSwgbV93b3JrZXJDbGllbnRXcmFw
cGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24p
LCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEJyaWRnZSogdGhpc1B0ciwgUGVlciogcGVlciwgUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlcikKK3ZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hhbm5l
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBCcmlkZ2UqIHRoaXNQdHIsIFBlZXIq
IHBlZXIsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIHRoaXNQdHItPm1fcGVlciA9IHBlZXI7CiAg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3luY01ldGhvZERvbmUoKTsKIH0KIAotdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRl
V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBCcmlkZ2Uq
IHRoaXNQdHIsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IGNsaWVudFdyYXBwZXIsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQnJpZGdlKiB0aGlzUHRyLCBQYXNzUmVmUHRyPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAkocmV2aXNpb24gODkxODIpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgcHJpdmF0ZToKICAgICBjbGFzcyBQZWVyIDogcHVibGljIFdlYlNvY2tldENoYW5uZWxDbGll
bnQgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZWVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGVlciogY3JlYXRlKFJlZlB0
cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIs
IFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQorICAgICAgICBzdGF0aWMgUGVlciogY3JlYXRlKFBhc3NSZWZQdHI8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBX
b3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBQZWVyKGNs
aWVudFdyYXBwZXIsIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgdXJsLCBwcm90b2Nv
bCk7CiAgICAgICAgIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwg
Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUGVlcihSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwg
V29ya2VyTG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiB0YXNrTW9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworICAgICAg
ICBQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiwgV29ya2VyTG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogCiAg
ICAgICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IG1f
d29ya2VyQ2xpZW50V3JhcHBlcjsKICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkmIG1fbG9hZGVy
UHJveHk7CkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBwcml2YXRlOgogICAgIHByaXZhdGU6CiAgICAg
ICAgIEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4sIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgdGFza01vZGUs
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKIAotICAgICAgICBzdGF0aWMg
dm9pZCBzZXRXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCcmlkZ2Uq
IHRoaXNQdHIsIFBlZXIqLCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPik7CisgICAgICAgIHN0YXRpYyB2b2lkIHNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSogdGhpc1B0ciwgUGVlciosIFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPik7CiAKICAgICAgICAgLy8gRXhl
Y3V0ZWQgb24gdGhlIG1haW4gdGhyZWFkIHRvIGNyZWF0ZSBhIFBlZXIgZm9yIHRoaXMgYnJpZGdl
LgotICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQnJpZGdlKiB0aGlzUHRyLCBSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworICAgICAgICBzdGF0aWMgdm9p
ZCBtYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgQnJpZGdlKiB0aGlzUHRyLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4sIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKTsKIAogICAgICAgICAvLyBFeGVjdXRlZCBvbiB0aGUgd29ya2Vy
IGNvbnRleHQncyB0aHJlYWQuCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnRXcmFwcGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98091</attachid>
            <date>2011-06-21 18:01:48 -0700</date>
            <delta_ts>2011-06-23 13:09:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62955-20110621180147.patch</filename>
            <type>text/plain</type>
            <size>23076</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5Mzk4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMjEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZlB0ciBtaXN1c2VkIGFzIGFyZ3VtZW50IHR5cGUgaW4gYSBmZXcg
Y2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI5NTUKKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zlckl0ZW0pOgorICAgICAgICAqIGRv
bS9EYXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1zOjpEYXRhVHJhbnNmZXJJdGVt
cyk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmg6CisgICAgICAgICogZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIHBhZ2UvV2ViS2l0
QW5pbWF0aW9uTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBbmltYXRpb25MaXN0
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QW5pbWF0aW9uTGlzdDo6aW5zZXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwYWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OkZFSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENv
bm5lY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFy
dENsb3NpbmdIYW5kc2hha2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJhY2spOgorICAgICAg
ICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6
CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
UGVlcjo6UGVlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVh
dGVXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIFVzZSBQYXNzUmVmUHRyIG9yIHJhdyBwb2lu
dGVyIGFzIGFwcHJvcHJpYXRlIGZvciBSZWZQdHIgYXJndW1lbnRzLgorCiAyMDExLTA2LTIxICBN
YXR0aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
LmNwcAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY29uc3QgY2hhciBEYXRhVHJhbnNmZXJJdGVtOjpraW5kU3RyaW5nW10gPSAic3RyaW5n
IjsKIGNvbnN0IGNoYXIgRGF0YVRyYW5zZmVySXRlbTo6a2luZEZpbGVbXSA9ICJmaWxlIjsKIAot
RGF0YVRyYW5zZmVySXRlbTo6RGF0YVRyYW5zZmVySXRlbShSZWZQdHI8Q2xpcGJvYXJkPiBvd25l
ciwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCitEYXRhVHJhbnNmZXJJ
dGVtOjpEYXRhVHJhbnNmZXJJdGVtKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwgY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBtX293bmVyKG93bmVyKQog
ICAgICwgbV9raW5kKGtpbmQpCiAgICAgLCBtX3R5cGUodHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmxvYj4gZ2V0QXNGaWxlKCkgPSAwOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgRGF0YVRyYW5zZmVySXRlbShSZWZQdHI8Q2xpcGJvYXJkPiBvd25l
ciwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIERhdGFUcmFu
c2Zlckl0ZW0oUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgQ2xpcGJvYXJkKiBvd25lcigpOwogCiBwcml2YXRl
OgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbXMuY3BwCShyZXZpc2lv
biA4OTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1E
YXRhVHJhbnNmZXJJdGVtczo6RGF0YVRyYW5zZmVySXRlbXMoUmVmUHRyPENsaXBib2FyZD4gY2xp
cGJvYXJkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorRGF0YVRyYW5zZmVySXRl
bXM6OkRhdGFUcmFuc2Zlckl0ZW1zKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX293bmVyKGNsaXBib2FyZCkK
ICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW1zLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJvdGVjdGVkOgotICAgIERhdGFUcmFuc2Zlckl0
ZW1zKFJlZlB0cjxDbGlwYm9hcmQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgRGF0
YVRyYW5zZmVySXRlbXMoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX293bmVyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJ
KHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MSw4ICs0NjEsMTAgQEAgdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdAogICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VP
blRleHRTdWJzdHJpbmcoc3RhdGljX2Nhc3Q8VGV4dCo+KG5vZGUpLCBwb3NpdGlvbi5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSwgcG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOwogfQog
Ci12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vi
c3RyaW5nKFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0KQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4
dFN1YnN0cmluZyhQYXNzUmVmUHRyPFRleHQ+IHBycFRleHROb2RlLCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQpCiB7CisgICAgUmVmUHRyPFRleHQ+IHRleHROb2RlID0gcHJwVGV4dE5v
ZGU7CisKICAgICBTdHJpbmcgdGV4dCA9IHRleHROb2RlLT5kYXRhKCk7CiAgICAgQVNTRVJUKCF0
ZXh0LmlzRW1wdHkoKSk7CiAKQEAgLTQ5MCw3ICs0OTIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpyZWJhbGFuY2VXaGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlRG93bnN0
cmVhbVBvcykgfHwgKHVuc2lnbmVkKWRvd25zdHJlYW0gPT0gdGV4dC5sZW5ndGgoKSk7CiAgICAg
CiAgICAgaWYgKHN0cmluZyAhPSByZWJhbGFuY2VkU3RyaW5nKQotICAgICAgICByZXBsYWNlVGV4
dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKHRleHROb2RlLCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJh
bGFuY2VkU3RyaW5nKTsKKyAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vy
cyh0ZXh0Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcp
OwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpwcmVwYXJlV2hpdGVzcGFjZUF0UG9z
aXRpb25Gb3JTcGxpdChQb3NpdGlvbiYgcG9zaXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiA4OTI4NikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBtZXJnZUlkZW50aWNhbEVs
ZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4sIFBhc3NSZWZQdHI8RWxlbWVudD4pOwogICAgIHZv
aWQgcmViYWxhbmNlV2hpdGVzcGFjZSgpOwogICAgIHZvaWQgcmViYWxhbmNlV2hpdGVzcGFjZUF0
KGNvbnN0IFBvc2l0aW9uJik7Ci0gICAgdm9pZCByZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vi
c3RyaW5nKFJlZlB0cjxUZXh0PiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAg
ICB2b2lkIHJlYmFsYW5jZVdoaXRlc3BhY2VPblRleHRTdWJzdHJpbmcoUGFzc1JlZlB0cjxUZXh0
PiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKICAgICB2b2lkIHByZXBhcmVXaGl0
ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KFBvc2l0aW9uJik7CiAgICAgYm9vbCBjYW5SZWJhbGFu
Y2UoY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICBib29sIHNob3VsZFJlYmFsYW5jZUxlYWRp
bmdXaGl0ZXNwYWNlRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9XZWJLaXRBbmltYXRpb25MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0QW5pbWF0aW9uTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDkgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRB
bmltYXRpb25MaXN0LmgiCiAKLSNpbmNsdWRlICJBbmltYXRpb24uaCIKLSNpbmNsdWRlICJBbmlt
YXRpb25CYXNlLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJXZWJLaXRB
bmltYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsMTIgKzU4LDEyIEBAIHZv
aWQgV2ViS2l0QW5pbWF0aW9uTGlzdDo6ZGVsZXRlQW5pbWF0aW8KICAgICBtX2FuaW1hdGlvbnMu
cmVtb3ZlKGluZGV4KTsKIH0KIAotdm9pZCBXZWJLaXRBbmltYXRpb25MaXN0OjphcHBlbmQoUmVm
UHRyPFdlYktpdEFuaW1hdGlvbj4gYW5pbWF0aW9uKQordm9pZCBXZWJLaXRBbmltYXRpb25MaXN0
OjphcHBlbmQoUGFzc1JlZlB0cjxXZWJLaXRBbmltYXRpb24+IGFuaW1hdGlvbikKIHsKICAgICBt
X2FuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7CiB9CiAKLXVuc2lnbmVkIFdlYktpdEFuaW1h
dGlvbkxpc3Q6Omluc2VydEFuaW1hdGlvbihSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPiBhbmltYXRp
b24sIHVuc2lnbmVkIGluZGV4KQordW5zaWduZWQgV2ViS2l0QW5pbWF0aW9uTGlzdDo6aW5zZXJ0
QW5pbWF0aW9uKFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPiBhbmltYXRpb24sIHVuc2lnbmVk
IGluZGV4KQogewogICAgIGlmICghYW5pbWF0aW9uKQogICAgICAgICByZXR1cm4gMDsKQEAgLTc5
LDQgKzc2LDMgQEAgdW5zaWduZWQgV2ViS2l0QW5pbWF0aW9uTGlzdDo6aW5zZXJ0QW5pbQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2Vi
S2l0QW5pbWF0aW9uTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2Vi
S2l0QW5pbWF0aW9uTGlzdC5oCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2ViS2l0QW5pbWF0aW9uTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNiArMzksMTYg
QEAgY2xhc3MgV2ViS2l0QW5pbWF0aW9uTGlzdCA6IHB1YmxpYyBSZWZDbwogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdEFuaW1hdGlvbkxpc3Q+IGNyZWF0ZSgpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdEFuaW1hdGlvbkxpc3QoKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0QW5pbWF0aW9uTGlzdCk7CiAgICAgfQogICAg
IH5XZWJLaXRBbmltYXRpb25MaXN0KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
ICAgICBXZWJLaXRBbmltYXRpb24qIGl0ZW0odW5zaWduZWQgaW5kZXgpOwogCi0gICAgdW5zaWdu
ZWQgaW5zZXJ0QW5pbWF0aW9uKFJlZlB0cjxXZWJLaXRBbmltYXRpb24+LCB1bnNpZ25lZCBpbmRl
eCk7CisgICAgdW5zaWduZWQgaW5zZXJ0QW5pbWF0aW9uKFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0
aW9uPiwgdW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgZGVsZXRlQW5pbWF0aW9uKHVuc2lnbmVk
IGluZGV4KTsKLSAgICB2b2lkIGFwcGVuZChSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPik7CisgICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxXZWJLaXRBbmltYXRpb24+KTsKIAogcHJpdmF0ZToKICAg
ICBXZWJLaXRBbmltYXRpb25MaXN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gODkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVJ
bWFnZTo6RkVJbWFnZShGaWx0ZXIqIGZpbHRlciwgUmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3Qg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykKK0ZFSW1hZ2U6OkZF
SW1hZ2UoRmlsdGVyKiBmaWx0ZXIsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogICAgIDogRmlsdGVyRWZm
ZWN0KGZpbHRlcikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX3ByZXNlcnZlQXNwZWN0
UmF0aW8ocHJlc2VydmVBc3BlY3RSYXRpbykKIHsKIH0KIAotUGFzc1JlZlB0cjxGRUltYWdlPiBG
RUltYWdlOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCitQYXNzUmVmUHRy
PEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgUGFzc1JlZlB0cjxJbWFn
ZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0
aW8pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUltYWdlKGZpbHRlciwgaW1hZ2UsIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEltYWdlOwogCiBjbGFzcyBGRUltYWdlIDogcHVibGlj
IEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RkVJbWFnZT4g
Y3JlYXRlKEZpbHRlciosIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUltYWdlPiBjcmVhdGUoRmlsdGVyKiwgUGFz
c1JlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKIAogICAgIHZv
aWQgc2V0QWJzb2x1dGVTdWJyZWdpb24oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVN1YnJlZ2lv
bikgeyBtX2Fic29sdXRlU3VicmVnaW9uID0gYWJzb2x1dGVTdWJyZWdpb247IH0KIApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKICAgICAKIHByaXZh
dGU6Ci0gICAgRkVJbWFnZShGaWx0ZXIqLCBSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvJik7CisgICAgRkVJbWFnZShGaWx0ZXIqLCBQYXNzUmVmUHRyPEltYWdlPiwg
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2lt
YWdlOwogICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDE0ICszMiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGaWx0ZXJCdWls
ZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKEZpbHRlciogZmlsdGVyKQotICAgIDogbV9sYXN0RWZmZWN0
KDApCiB7CiAgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFt
ZSgpLCBTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CiAgICAgbV9idWlsdGluRWZmZWN0
cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNlQWxwaGE6OmNyZWF0ZShmaWx0
ZXIpKTsKICAgICBhZGRCdWlsdGluRWZmZWN0cygpOwogfQogCi12b2lkIFNWR0ZpbHRlckJ1aWxk
ZXI6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQogewogICAgIGlmIChpZC5pc0VtcHR5KCkp
IHsKICAgICAgICAgbV9sYXN0RWZmZWN0ID0gZWZmZWN0OwpAQCAtNjgsMjAgKzY3LDIxIEBAIEZp
bHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWMKICAgICByZXR1cm4gbV9uYW1l
ZEVmZmVjdHMuZ2V0KGlkKS5nZXQoKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBl
bmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0UmVm
ZXJlbmNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBw
ZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcnBF
ZmZlY3QsIFJlbmRlck9iamVjdCogb2JqZWN0KQogeworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IHBycEVmZmVjdDsKKwogICAgIC8vIFRoZSBlZmZlY3QgbXVzdCBiZSBhIG5ld2x5
IGNyZWF0ZWQgZmlsdGVyIGVmZmVjdC4KLSAgICBBU1NFUlQoIW1fZWZmZWN0UmVmZXJlbmNlcy5j
b250YWlucyhlZmZlY3RSZWZlcmVuY2UpKTsKKyAgICBBU1NFUlQoIW1fZWZmZWN0UmVmZXJlbmNl
cy5jb250YWlucyhlZmZlY3QpKTsKICAgICBBU1NFUlQob2JqZWN0ICYmICFtX2VmZmVjdFJlbmRl
cmVyLmNvbnRhaW5zKG9iamVjdCkpOwotICAgIG1fZWZmZWN0UmVmZXJlbmNlcy5hZGQoZWZmZWN0
UmVmZXJlbmNlLCBGaWx0ZXJFZmZlY3RTZXQoKSk7CisgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFk
ZChlZmZlY3QsIEZpbHRlckVmZmVjdFNldCgpKTsKIAotICAgIEZpbHRlckVmZmVjdCogZWZmZWN0
ID0gZWZmZWN0UmVmZXJlbmNlLmdldCgpOwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRFZmZl
Y3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5zaXplKCk7CiAKICAgICAvLyBJdCBpcyBub3Qg
cG9zc2libGUgdG8gYWRkIHRoZSBzYW1lIHZhbHVlIHRvIGEgc2V0IHR3aWNlLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0RWZmZWN0czsgKytpKQotICAgICAgICBl
ZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSkpLmFkZChlZmZlY3QpOwotICAg
IG1fZWZmZWN0UmVuZGVyZXIuYWRkKG9iamVjdCwgZWZmZWN0UmVmZXJlbmNlLmdldCgpKTsKKyAg
ICAgICAgZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0KGkpKS5hZGQoZWZmZWN0
LmdldCgpKTsKKyAgICBtX2VmZmVjdFJlbmRlcmVyLmFkZChvYmplY3QsIGVmZmVjdC5nZXQoKSk7
CiB9CiAKIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRmlsdGVyQnVpbGRlcj4gY3Jl
YXRlKEZpbHRlciogZmlsdGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRmlsdGVyQnVpbGRl
cihmaWx0ZXIpKTsgfQogCi0gICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KTsKKyAgICB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4pOwogCiAgICAgRmlsdGVyRWZmZWN0KiBn
ZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogICAgIEZpbHRlckVm
ZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQog
Ci0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVm
ZmVjdD4sIFJlbmRlck9iamVjdCopOworICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZl
cmVuY2VzKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiwgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBp
bmxpbmUgRmlsdGVyRWZmZWN0U2V0JiBlZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZm
ZWN0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5j
cHAJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsMjggKzE0NCwyOCBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
CiAgICAgICAgICgqaXRlciktPnBlcmZvcm1UYXNrKDApOwogfQogCi12b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdENhbGxiYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdENhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogd3JhcHBl
cikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsKICAgICBpZiAod3Jh
cHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5kaWRDb25uZWN0KCk7
CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIsIFN0
cmluZyBtZXNzYWdlKQordm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiB3cmFwcGVyLCBT
dHJpbmcgbWVzc2FnZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsK
ICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5k
aWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJhY2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyKiB3cmFwcGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNv
bnRleHQpOwogICAgIGlmICh3cmFwcGVyLT5tX2NsaWVudCkKICAgICAgICAgd3JhcHBlci0+bV9j
bGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogfQogCi12b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyPiB3cmFwcGVyLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1v
dW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0
YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbikKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciog
d3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24pCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4
dCk7CiAgICAgaWYgKHdyYXBwZXItPm1fY2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5oCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDEwICs3MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKIAog
ICAgIHZvaWQgcHJvY2Vzc1BlbmRpbmdUYXNrcygpOwotICAgIHN0YXRpYyB2b2lkIGRpZENvbm5l
Y3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4pOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBTdHJpbmcgbWVzc2FnZSk7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgdW5z
aWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpOworICAgIHN0YXRpYyB2b2lkIGRp
ZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyKiwgU3RyaW5nIG1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lk
IGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29t
cGxldGlvblN0YXR1cyk7CiAKICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsK
ICAgICBib29sIG1fc3luY01ldGhvZERvbmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnIKICAgICAg
ICAgbV9icmlkZ2UtPnJlc3VtZSgpOwogfQogCi1Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6UGVlcihSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYg
bG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAg
ICA6IG1fd29ya2VyQ2xpZW50V3JhcHBlcihjbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQ
cm94eShsb2FkZXJQcm94eSkKICAgICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQsIHRoaXMsIHVybCwgcHJvdG9jb2wpKQpAQCAtMjU4LDE0
ICsyNTgsMTQgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UAogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxi
YWNrVGFzaygmd29ya2VyQ29udGV4dERpZENsb3NlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiksIG1fdGFz
a01vZGUpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OnNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
QnJpZGdlKiB0aGlzUHRyLCBQZWVyKiBwZWVyLCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyKQordm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhpc1B0ciwgUGVlciogcGVlciwg
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5p
c1dvcmtlckNvbnRleHQoKSk7CiAgICAgdGhpc1B0ci0+bV9wZWVyID0gcGVlcjsKICAgICB3b3Jr
ZXJDbGllbnRXcmFwcGVyLT5zZXRTeW5jTWV0aG9kRG9uZSgpOwogfQogCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2Nr
ZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhpc1B0
ciwgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50
V3JhcHBlciwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBCcmlkZ2UqIHRoaXNQdHIsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcm
IHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCShyZXZp
c2lvbiA4OTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwcml2
YXRlOgogICAgIGNsYXNzIFBlZXIgOiBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQZWVyKiBjcmVhdGUoUmVmUHRyPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2Vy
TG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCisgICAgICAgIHN0YXRpYyBQZWVyKiBjcmVhdGUoUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIsIFdvcmtlckxv
YWRlclByb3h5JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFBlZXIoY2xpZW50V3Jh
cHBlciwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCB1cmwsIHByb3RvY29sKTsKICAg
ICAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQZWVy
KFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBXb3JrZXJM
b2FkZXJQcm94eSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgICAgIFBlZXIo
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRh
c2tNb2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAKICAgICAgICAg
UmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJD
bGllbnRXcmFwcGVyOwogICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSYgbV9sb2FkZXJQcm94eTsK
QEAgLTEzNCwxMCArMTM0LDEwIEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgQnJp
ZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwg
UGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNl
dFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSogdGhpc1B0
ciwgUGVlciosIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgQnJpZGdlKiB0aGlzUHRyLCBQZWVyKiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KTsKIAogICAgICAgICAvLyBFeGVjdXRlZCBv
biB0aGUgbWFpbiB0aHJlYWQgdG8gY3JlYXRlIGEgUGVlciBmb3IgdGhpcyBicmlkZ2UuCi0gICAg
ICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBCcmlkZ2UqIHRoaXNQdHIsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCcmlk
Z2UqIHRoaXNQdHIsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpOwogCiAgICAgICAgIC8vIEV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4
dCdzIHRocmVhZC4KICAgICAgICAgdm9pZCBjbGVhckNsaWVudFdyYXBwZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98385</attachid>
            <date>2011-06-23 13:09:59 -0700</date>
            <delta_ts>2011-06-23 14:30:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62955-20110623130958.patch</filename>
            <type>text/plain</type>
            <size>23393</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NjA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMjEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZlB0ciBtaXN1c2VkIGFzIGFyZ3VtZW50IHR5cGUgaW4gYSBmZXcg
Y2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI5NTUKKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zlckl0ZW0pOgorICAgICAgICAqIGRv
bS9EYXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1zOjpEYXRhVHJhbnNmZXJJdGVt
cyk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmg6CisgICAgICAgICogZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIHBhZ2UvV2ViS2l0
QW5pbWF0aW9uTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBbmltYXRpb25MaXN0
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QW5pbWF0aW9uTGlzdDo6aW5zZXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwYWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OkZFSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENv
bm5lY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFy
dENsb3NpbmdIYW5kc2hha2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJhY2spOgorICAgICAg
ICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6
CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
UGVlcjo6UGVlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVh
dGVXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIFVzZSBQYXNzUmVmUHRyIG9yIHJhdyBwb2lu
dGVyIGFzIGFwcHJvcHJpYXRlIGZvciBSZWZQdHIgYXJndW1lbnRzLgorCiAyMDExLTA2LTIzICBB
bmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBC
ZW5qYW1pbiBQb3VsYWluLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
LmNwcAkocmV2aXNpb24gODk2MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY29uc3QgY2hhciBEYXRhVHJhbnNmZXJJdGVtOjpraW5kU3RyaW5nW10gPSAic3RyaW5n
IjsKIGNvbnN0IGNoYXIgRGF0YVRyYW5zZmVySXRlbTo6a2luZEZpbGVbXSA9ICJmaWxlIjsKIAot
RGF0YVRyYW5zZmVySXRlbTo6RGF0YVRyYW5zZmVySXRlbShSZWZQdHI8Q2xpcGJvYXJkPiBvd25l
ciwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCitEYXRhVHJhbnNmZXJJ
dGVtOjpEYXRhVHJhbnNmZXJJdGVtKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwgY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBtX293bmVyKG93bmVyKQog
ICAgICwgbV9raW5kKGtpbmQpCiAgICAgLCBtX3R5cGUodHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAkocmV2aXNpb24gODk2MDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmxvYj4gZ2V0QXNGaWxlKCkgPSAwOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgRGF0YVRyYW5zZmVySXRlbShSZWZQdHI8Q2xpcGJvYXJkPiBvd25l
ciwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIERhdGFUcmFu
c2Zlckl0ZW0oUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgQ2xpcGJvYXJkKiBvd25lcigpOwogCiBwcml2YXRl
OgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbXMuY3BwCShyZXZpc2lv
biA4OTYwNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1E
YXRhVHJhbnNmZXJJdGVtczo6RGF0YVRyYW5zZmVySXRlbXMoUmVmUHRyPENsaXBib2FyZD4gY2xp
cGJvYXJkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorRGF0YVRyYW5zZmVySXRl
bXM6OkRhdGFUcmFuc2Zlckl0ZW1zKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX293bmVyKGNsaXBib2FyZCkK
ICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW1zLmgJKHJldmlzaW9uIDg5NjA2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJvdGVjdGVkOgotICAgIERhdGFUcmFuc2Zlckl0
ZW1zKFJlZlB0cjxDbGlwYm9hcmQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgRGF0
YVRyYW5zZmVySXRlbXMoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX293bmVyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJ
KHJldmlzaW9uIDg5NjA2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw4ICs0NzQsMTAgQEAgdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdAogICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VP
blRleHRTdWJzdHJpbmcoc3RhdGljX2Nhc3Q8VGV4dCo+KG5vZGUpLCBwb3NpdGlvbi5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSwgcG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOwogfQog
Ci12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vi
c3RyaW5nKFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0KQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4
dFN1YnN0cmluZyhQYXNzUmVmUHRyPFRleHQ+IHBycFRleHROb2RlLCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQpCiB7CisgICAgUmVmUHRyPFRleHQ+IHRleHROb2RlID0gcHJwVGV4dE5v
ZGU7CisKICAgICBTdHJpbmcgdGV4dCA9IHRleHROb2RlLT5kYXRhKCk7CiAgICAgQVNTRVJUKCF0
ZXh0LmlzRW1wdHkoKSk7CiAKQEAgLTUwMyw3ICs1MDUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpyZWJhbGFuY2VXaGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlRG93bnN0
cmVhbVBvcykgfHwgKHVuc2lnbmVkKWRvd25zdHJlYW0gPT0gdGV4dC5sZW5ndGgoKSk7CiAgICAg
CiAgICAgaWYgKHN0cmluZyAhPSByZWJhbGFuY2VkU3RyaW5nKQotICAgICAgICByZXBsYWNlVGV4
dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKHRleHROb2RlLCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJh
bGFuY2VkU3RyaW5nKTsKKyAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vy
cyh0ZXh0Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcp
OwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpwcmVwYXJlV2hpdGVzcGFjZUF0UG9z
aXRpb25Gb3JTcGxpdChQb3NpdGlvbiYgcG9zaXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiA4OTYwNikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBtZXJnZUlkZW50aWNhbEVs
ZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4sIFBhc3NSZWZQdHI8RWxlbWVudD4pOwogICAgIHZv
aWQgcmViYWxhbmNlV2hpdGVzcGFjZSgpOwogICAgIHZvaWQgcmViYWxhbmNlV2hpdGVzcGFjZUF0
KGNvbnN0IFBvc2l0aW9uJik7Ci0gICAgdm9pZCByZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vi
c3RyaW5nKFJlZlB0cjxUZXh0PiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAg
ICB2b2lkIHJlYmFsYW5jZVdoaXRlc3BhY2VPblRleHRTdWJzdHJpbmcoUGFzc1JlZlB0cjxUZXh0
PiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKICAgICB2b2lkIHByZXBhcmVXaGl0
ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KFBvc2l0aW9uJik7CiAgICAgYm9vbCBjYW5SZWJhbGFu
Y2UoY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICBib29sIHNob3VsZFJlYmFsYW5jZUxlYWRp
bmdXaGl0ZXNwYWNlRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9XZWJLaXRBbmltYXRpb25MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dlYktpdEFuaW1hdGlvbkxpc3QuY3BwCShyZXZpc2lvbiA4OTYwNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0QW5pbWF0aW9uTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDkgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRB
bmltYXRpb25MaXN0LmgiCiAKLSNpbmNsdWRlICJBbmltYXRpb24uaCIKLSNpbmNsdWRlICJBbmlt
YXRpb25CYXNlLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJXZWJLaXRB
bmltYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsMTIgKzU4LDEyIEBAIHZv
aWQgV2ViS2l0QW5pbWF0aW9uTGlzdDo6ZGVsZXRlQW5pbWF0aW8KICAgICBtX2FuaW1hdGlvbnMu
cmVtb3ZlKGluZGV4KTsKIH0KIAotdm9pZCBXZWJLaXRBbmltYXRpb25MaXN0OjphcHBlbmQoUmVm
UHRyPFdlYktpdEFuaW1hdGlvbj4gYW5pbWF0aW9uKQordm9pZCBXZWJLaXRBbmltYXRpb25MaXN0
OjphcHBlbmQoUGFzc1JlZlB0cjxXZWJLaXRBbmltYXRpb24+IGFuaW1hdGlvbikKIHsKICAgICBt
X2FuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7CiB9CiAKLXVuc2lnbmVkIFdlYktpdEFuaW1h
dGlvbkxpc3Q6Omluc2VydEFuaW1hdGlvbihSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPiBhbmltYXRp
b24sIHVuc2lnbmVkIGluZGV4KQordW5zaWduZWQgV2ViS2l0QW5pbWF0aW9uTGlzdDo6aW5zZXJ0
QW5pbWF0aW9uKFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPiBhbmltYXRpb24sIHVuc2lnbmVk
IGluZGV4KQogewogICAgIGlmICghYW5pbWF0aW9uKQogICAgICAgICByZXR1cm4gMDsKQEAgLTc5
LDQgKzc2LDMgQEAgdW5zaWduZWQgV2ViS2l0QW5pbWF0aW9uTGlzdDo6aW5zZXJ0QW5pbQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2Vi
S2l0QW5pbWF0aW9uTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2Vi
S2l0QW5pbWF0aW9uTGlzdC5oCShyZXZpc2lvbiA4OTYwNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2ViS2l0QW5pbWF0aW9uTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNiArMzksMTYg
QEAgY2xhc3MgV2ViS2l0QW5pbWF0aW9uTGlzdCA6IHB1YmxpYyBSZWZDbwogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdEFuaW1hdGlvbkxpc3Q+IGNyZWF0ZSgpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdEFuaW1hdGlvbkxpc3QoKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0QW5pbWF0aW9uTGlzdCk7CiAgICAgfQogICAg
IH5XZWJLaXRBbmltYXRpb25MaXN0KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
ICAgICBXZWJLaXRBbmltYXRpb24qIGl0ZW0odW5zaWduZWQgaW5kZXgpOwogCi0gICAgdW5zaWdu
ZWQgaW5zZXJ0QW5pbWF0aW9uKFJlZlB0cjxXZWJLaXRBbmltYXRpb24+LCB1bnNpZ25lZCBpbmRl
eCk7CisgICAgdW5zaWduZWQgaW5zZXJ0QW5pbWF0aW9uKFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0
aW9uPiwgdW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgZGVsZXRlQW5pbWF0aW9uKHVuc2lnbmVk
IGluZGV4KTsKLSAgICB2b2lkIGFwcGVuZChSZWZQdHI8V2ViS2l0QW5pbWF0aW9uPik7CisgICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxXZWJLaXRBbmltYXRpb24+KTsKIAogcHJpdmF0ZToKICAg
ICBXZWJLaXRBbmltYXRpb25MaXN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gODk2MDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVJ
bWFnZTo6RkVJbWFnZShGaWx0ZXIqIGZpbHRlciwgUmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3Qg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykKK0ZFSW1hZ2U6OkZF
SW1hZ2UoRmlsdGVyKiBmaWx0ZXIsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogICAgIDogRmlsdGVyRWZm
ZWN0KGZpbHRlcikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX3ByZXNlcnZlQXNwZWN0
UmF0aW8ocHJlc2VydmVBc3BlY3RSYXRpbykKIHsKIH0KIAotUGFzc1JlZlB0cjxGRUltYWdlPiBG
RUltYWdlOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCitQYXNzUmVmUHRy
PEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgUGFzc1JlZlB0cjxJbWFn
ZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0
aW8pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUltYWdlKGZpbHRlciwgaW1hZ2UsIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHJldmlzaW9uIDg5NjA2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEltYWdlOwogCiBjbGFzcyBGRUltYWdlIDogcHVibGlj
IEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RkVJbWFnZT4g
Y3JlYXRlKEZpbHRlciosIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUltYWdlPiBjcmVhdGUoRmlsdGVyKiwgUGFz
c1JlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKIAogICAgIHZv
aWQgc2V0QWJzb2x1dGVTdWJyZWdpb24oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVN1YnJlZ2lv
bikgeyBtX2Fic29sdXRlU3VicmVnaW9uID0gYWJzb2x1dGVTdWJyZWdpb247IH0KIApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKICAgICAKIHByaXZh
dGU6Ci0gICAgRkVJbWFnZShGaWx0ZXIqLCBSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvJik7CisgICAgRkVJbWFnZShGaWx0ZXIqLCBQYXNzUmVmUHRyPEltYWdlPiwg
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2lt
YWdlOwogICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAJKHJldmlzaW9uIDg5NjA2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDE0ICszMiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGaWx0ZXJCdWls
ZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKEZpbHRlciogZmlsdGVyKQotICAgIDogbV9sYXN0RWZmZWN0
KDApCiB7CiAgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFt
ZSgpLCBTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CiAgICAgbV9idWlsdGluRWZmZWN0
cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNlQWxwaGE6OmNyZWF0ZShmaWx0
ZXIpKTsKICAgICBhZGRCdWlsdGluRWZmZWN0cygpOwogfQogCi12b2lkIFNWR0ZpbHRlckJ1aWxk
ZXI6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQogewogICAgIGlmIChpZC5pc0VtcHR5KCkp
IHsKICAgICAgICAgbV9sYXN0RWZmZWN0ID0gZWZmZWN0OwpAQCAtNjgsMjAgKzY3LDIxIEBAIEZp
bHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWMKICAgICByZXR1cm4gbV9uYW1l
ZEVmZmVjdHMuZ2V0KGlkKS5nZXQoKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBl
bmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0UmVm
ZXJlbmNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBw
ZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcnBF
ZmZlY3QsIFJlbmRlck9iamVjdCogb2JqZWN0KQogeworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IHBycEVmZmVjdDsKKwogICAgIC8vIFRoZSBlZmZlY3QgbXVzdCBiZSBhIG5ld2x5
IGNyZWF0ZWQgZmlsdGVyIGVmZmVjdC4KLSAgICBBU1NFUlQoIW1fZWZmZWN0UmVmZXJlbmNlcy5j
b250YWlucyhlZmZlY3RSZWZlcmVuY2UpKTsKKyAgICBBU1NFUlQoIW1fZWZmZWN0UmVmZXJlbmNl
cy5jb250YWlucyhlZmZlY3QpKTsKICAgICBBU1NFUlQob2JqZWN0ICYmICFtX2VmZmVjdFJlbmRl
cmVyLmNvbnRhaW5zKG9iamVjdCkpOwotICAgIG1fZWZmZWN0UmVmZXJlbmNlcy5hZGQoZWZmZWN0
UmVmZXJlbmNlLCBGaWx0ZXJFZmZlY3RTZXQoKSk7CisgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFk
ZChlZmZlY3QsIEZpbHRlckVmZmVjdFNldCgpKTsKIAotICAgIEZpbHRlckVmZmVjdCogZWZmZWN0
ID0gZWZmZWN0UmVmZXJlbmNlLmdldCgpOwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRFZmZl
Y3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5zaXplKCk7CiAKICAgICAvLyBJdCBpcyBub3Qg
cG9zc2libGUgdG8gYWRkIHRoZSBzYW1lIHZhbHVlIHRvIGEgc2V0IHR3aWNlLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0RWZmZWN0czsgKytpKQotICAgICAgICBl
ZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSkpLmFkZChlZmZlY3QpOwotICAg
IG1fZWZmZWN0UmVuZGVyZXIuYWRkKG9iamVjdCwgZWZmZWN0UmVmZXJlbmNlLmdldCgpKTsKKyAg
ICAgICAgZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0KGkpKS5hZGQoZWZmZWN0
LmdldCgpKTsKKyAgICBtX2VmZmVjdFJlbmRlcmVyLmFkZChvYmplY3QsIGVmZmVjdC5nZXQoKSk7
CiB9CiAKIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmgJKHJldmlzaW9uIDg5NjA2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRmlsdGVyQnVpbGRlcj4gY3Jl
YXRlKEZpbHRlciogZmlsdGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRmlsdGVyQnVpbGRl
cihmaWx0ZXIpKTsgfQogCi0gICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KTsKKyAgICB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4pOwogCiAgICAgRmlsdGVyRWZmZWN0KiBn
ZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogICAgIEZpbHRlckVm
ZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQog
Ci0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVm
ZmVjdD4sIFJlbmRlck9iamVjdCopOworICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZl
cmVuY2VzKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiwgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBp
bmxpbmUgRmlsdGVyRWZmZWN0U2V0JiBlZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZm
ZWN0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5j
cHAJKHJldmlzaW9uIDg5NjA2KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsMjggKzE0NCwyOCBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
CiAgICAgICAgICgqaXRlciktPnBlcmZvcm1UYXNrKDApOwogfQogCi12b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdENhbGxiYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdENhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogd3JhcHBl
cikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsKICAgICBpZiAod3Jh
cHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5kaWRDb25uZWN0KCk7
CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIsIFN0
cmluZyBtZXNzYWdlKQordm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiB3cmFwcGVyLCBT
dHJpbmcgbWVzc2FnZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsK
ICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5k
aWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJhY2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyKiB3cmFwcGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNv
bnRleHQpOwogICAgIGlmICh3cmFwcGVyLT5tX2NsaWVudCkKICAgICAgICAgd3JhcHBlci0+bV9j
bGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogfQogCi12b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyPiB3cmFwcGVyLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1v
dW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0
YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbikKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciog
d3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24pCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4
dCk7CiAgICAgaWYgKHdyYXBwZXItPm1fY2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5oCShyZXZpc2lvbiA4OTYwNikKKysrIFNvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDEwICs3MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKIAog
ICAgIHZvaWQgcHJvY2Vzc1BlbmRpbmdUYXNrcygpOwotICAgIHN0YXRpYyB2b2lkIGRpZENvbm5l
Y3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4pOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBTdHJpbmcgbWVzc2FnZSk7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgdW5z
aWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpOworICAgIHN0YXRpYyB2b2lkIGRp
ZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyKiwgU3RyaW5nIG1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lk
IGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29t
cGxldGlvblN0YXR1cyk7CiAKICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsK
ICAgICBib29sIG1fc3luY01ldGhvZERvbmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAkocmV2aXNpb24gODk2MDYpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnIKICAgICAg
ICAgbV9icmlkZ2UtPnJlc3VtZSgpOwogfQogCi1Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6UGVlcihSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYg
bG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAg
ICA6IG1fd29ya2VyQ2xpZW50V3JhcHBlcihjbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQ
cm94eShsb2FkZXJQcm94eSkKICAgICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQsIHRoaXMsIHVybCwgcHJvdG9jb2wpKQpAQCAtMjU4LDE4
ICsyNTgsMjAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UAogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxi
YWNrVGFzaygmd29ya2VyQ29udGV4dERpZENsb3NlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiksIG1fdGFz
a01vZGUpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OnNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
QnJpZGdlKiB0aGlzUHRyLCBQZWVyKiBwZWVyLCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyKQordm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhpc1B0ciwgUGVlciogcGVlciwg
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5p
c1dvcmtlckNvbnRleHQoKSk7CiAgICAgdGhpc1B0ci0+bV9wZWVyID0gcGVlcjsKICAgICB3b3Jr
ZXJDbGllbnRXcmFwcGVyLT5zZXRTeW5jTWV0aG9kRG9uZSgpOwogfQogCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2Nr
ZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhpc1B0
ciwgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50
V3JhcHBlciwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBCcmlkZ2UqIHRoaXNQdHIsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBwcnBDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJp
bmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKKyAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyID0gcHJwQ2xpZW50V3JhcHBlcjsK
KwogICAgIFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUoY2xpZW50V3JhcHBlciwgdGhpc1B0ci0+
bV9sb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpOwogICAgIHRo
aXNQdHItPm1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAogICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hhbm5lbCwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgJKHJldmlzaW9uIDg5NjA2KQorKysgU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVlciA6IHB1
YmxpYyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUGVlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBlZXIqIGNyZWF0ZShSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHks
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKKyAgICAgICAgc3RhdGlj
IFBlZXIqIGNyZWF0ZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgUGVlcihjbGllbnRXcmFwcGVyLCBsb2FkZXJQcm94eSwgY29udGV4
dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpOwogICAgICAgICB9CkBAIC0xMDMsNyArMTAzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcg
dW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVz
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFBlZXIoUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5JiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgUGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5JiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKTsKIAogICAgICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CiAgICAgICAgIFdv
cmtlckxvYWRlclByb3h5JiBtX2xvYWRlclByb3h5OwpAQCAtMTM0LDEwICsxMzQsMTAgQEAgcHJp
dmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICBCcmlkZ2UoUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+
LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgQnJpZGdlKiB0aGlzUHRyLCBQZWVyKiwgUmVmUHRyPFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4pOworICAgICAgICBzdGF0aWMgdm9pZCBz
ZXRXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCcmlkZ2UqIHRoaXNQ
dHIsIFBlZXIqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4pOwogCiAgICAgICAgIC8vIEV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZCB0byBjcmVh
dGUgYSBQZWVyIGZvciB0aGlzIGJyaWRnZS4KLSAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZENyZWF0ZVdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSog
dGhpc1B0ciwgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4s
IGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKTsKKyAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5u
ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSogdGhpc1B0ciwgUGFzc1JlZlB0cjxU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBjb25zdCBTdHJpbmcmIHRh
c2tNb2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAKICAgICAgICAg
Ly8gRXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkLgogICAgICAgICB2b2lk
IGNsZWFyQ2xpZW50V3JhcHBlcigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>