<?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>43736</bug_id>
          
          <creation_ts>2010-08-09 11:48:00 -0700</creation_ts>
          <short_desc>Refactor HTMLScriptRunner to allow deferred scripts to share code</short_desc>
          <delta_ts>2010-08-13 20:10:07 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>40934</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262253</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-09 11:48:00 -0700</bug_when>
    <thetext>Factor out a base ScriptRunner and ScriptRunnerHost</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262258</commentid>
    <comment_count>1</comment_count>
      <attachid>63914</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-09 12:04:05 -0700</bug_when>
    <thetext>Created attachment 63914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262259</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-09 12:05:30 -0700</bug_when>
    <thetext>Since everything in ScriptRunner operators on a PendingScript, an alternate approach would be to make these members of PendingScript. But I kind of like keeping PendingScript a POD. Let me know if you think otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262305</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 13:53:59 -0700</bug_when>
    <thetext>I&apos;m not sure I understand the problem we&apos;re trying to solve here. AsyncScriptRunner (the factored bit out of Document) needs to deal with PendingScripts and share code with the parser-driven HTMLScriptRunner?

Should this be done by composition instead of inheritance?  Should HTMLScriptRunner become ParserScriptRunner?

I&apos;m just not sure I understand.  Maybe you can brief me over IRC or clarify more what you&apos;re going after in the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262315</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-09 14:14:36 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m not sure I understand the problem we&apos;re trying to solve here. AsyncScriptRunner (the factored bit out of Document) needs to deal with PendingScripts and share code with the parser-driven HTMLScriptRunner?
&gt; 
&gt; Should this be done by composition instead of inheritance?

Oh yeah, you are right. I&apos;ll change that after we are straight on everything else.

&gt;  Should HTMLScriptRunner become ParserScriptRunner?

I don&apos;t think so. HTMLScriptRunner deals with HTMLInputStream and other HTML specific things. It also assumes things like the src attribute contains the URL (as opposed to the href attribute). In any case, that would be orthogonal to this I think.

&gt; 
&gt; I&apos;m just not sure I understand.  Maybe you can brief me over IRC or clarify more what you&apos;re going after in the bug.

My plan is that there will be 3 ScriptRunners (DeferredScriptRunner, AsyncScriptRunner, and HTMLScriptRunner).

1. HTMLScriptRunner. The only modifications I have planned after this patch are to call document()-&gt;asyncScriptRunner-&gt;runScript() and document()-&gt;deferredScriptRunner()-&gt;runScript() in the appropriate place in runScript().

2. DeferredScriptRunner. Originally I was going to add a Deque&lt;PendingScript&gt; to HTMLScriptRunner and copy the first PendingScript from the Deque into m_parsingBlockingScript. However, Adam discovered that I can&apos;t really use that code path because NestingLevel reopens the insertion point, when in fact deferred scripts should not have an insertion point (doc.writes are dropped on the floor). My new plan is to have the Document own a DeferredScriptRunner in the same way it owns an AsyncScriptRunner. DeferredScriptRunner will have a trivial implementation that utilizes all of the methods in ScriptRunner for requesting and executing its Deque of PendingScripts. That is mostly coded and I can show you the WIP if that helps.

3. AsyncScriptRunner. Currently ScriptElementData duplicates a lot of the functionality that I&apos;ve factored out to ScriptRunner here. Factoring out the code I&apos;ve moved into ScriptRunner will allow AsyncScriptRunner to use the ScriptRunner functionality and it will allow ScriptElement to just use AsyncScriptRunner instead of duplicating the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262342</commentid>
    <comment_count>5</comment_count>
      <attachid>63934</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-09 15:27:19 -0700</bug_when>
    <thetext>Created attachment 63934
Composite instead of inherit ScriptRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262468</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-09 20:12:19 -0700</bug_when>
    <thetext>&gt; &gt; Should this be done by composition instead of inheritance?
&gt; 
&gt; Oh yeah, you are right. I&apos;ll change that after we are straight on everything else.

I went ahead and did this.

&gt; DeferredScriptRunner will have a trivial implementation that utilizes all of the methods in ScriptRunner for requesting and executing its Deque of PendingScripts. That is mostly coded and I can show you the WIP if that helps.
This patch shows this refactor + the new DeferredScriptRunner. Hopefully it makes the usefulness of this refactor clear.
https://bugs.webkit.org/attachment.cgi?id=63968&amp;action=prettypatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263358</commentid>
    <comment_count>7</comment_count>
      <attachid>64138</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-11 11:33:30 -0700</bug_when>
    <thetext>Created attachment 64138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263360</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-11 11:41:39 -0700</bug_when>
    <thetext>Don&apos;t you have to split out the code which increments the scripting level too?  It seems you wnat to split making an insertion point away from incrementing the scripting nesting level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263372</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-11 11:51:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Don&apos;t you have to split out the code which increments the scripting level too?  It seems you wnat to split making an insertion point away from incrementing the scripting nesting level.

I think so, but I&apos;m not quite sure how that will look yet. Do you think that should be added to this patch or is it reasonable to do separately? My thought is that it can be separated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264062</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-12 16:04:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Don&apos;t you have to split out the code which increments the scripting level too?  It seems you wnat to split making an insertion point away from incrementing the scripting nesting level.
&gt; 
&gt; I think so, but I&apos;m not quite sure how that will look yet. Do you think that should be added to this patch or is it reasonable to do separately? My thought is that it can be separated.

In any case, I think this is a positive refactor and a step in the right direction. Is it okay to check in as an incremental step?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264543</commentid>
    <comment_count>11</comment_count>
      <attachid>64388</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-13 16:37:31 -0700</bug_when>
    <thetext>Created attachment 64388
Separate nesting level from insertion point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264546</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-13 16:54:55 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Don&apos;t you have to split out the code which increments the scripting level too?  It seems you wnat to split making an insertion point away from incrementing the scripting nesting level.

Yep, after I got deferred on top of this again, I see what you mean. The patch is updated to split that out now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264584</commentid>
    <comment_count>13</comment_count>
      <attachid>64388</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-13 18:57:59 -0700</bug_when>
    <thetext>Comment on attachment 64388
Separate nesting level from insertion point

Yay!  Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264597</commentid>
    <comment_count>14</comment_count>
      <attachid>64388</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-13 20:10:01 -0700</bug_when>
    <thetext>Comment on attachment 64388
Separate nesting level from insertion point

Clearing flags on attachment: 64388

Committed r65350: &lt;http://trac.webkit.org/changeset/65350&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264598</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-13 20:10:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63914</attachid>
            <date>2010-08-09 12:04:05 -0700</date>
            <delta_ts>2010-08-09 15:27:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43736-20100809120404.patch</filename>
            <type>text/plain</type>
            <size>35256</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA0YjU1YTQ2NDI2NWI3NzFhMmFlNzgwMDY2OGY3NWJkYWMwMjdmMzAyLi5jYzFkNjhjOWQ0ZTdh
N2YzYjU2MDVjOThjM2MzNWYzYWEzZTEyZGUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xNzAsNiArMTcwLDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL1NjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5jcHAgXAogCWRvbS9TY3JpcHRFbGVtZW50LmNwcCBcCiAJZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwIFwKKwlkb20vU2NyaXB0UnVubmVyLmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1l
bnQuY3BwIFwKIAlkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAgXAogCWRvbS9TcGFjZVNwbGl0U3Ry
aW5nLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA2NGQxMmVkOWMxYmI1ODlhMjg4NjljZDRkMGI2NTg4ODM4ZmYx
NmRhLi42YmVmYmJhNTUwOTcyMzczZTlkZjg4MGMxM2M5MmJmN2RlNzQ0OWNmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTg1MCw2ICs4NTAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NjcmlwdGFibGVE
b2N1bWVudFBhcnNlci5jcHAKICAgICBkb20vU2NyaXB0RWxlbWVudC5jcHAKICAgICBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKyAgICBkb20vU2NyaXB0UnVubmVyLmNwcAogICAgIGRv
bS9TZWxlY3RFbGVtZW50LmNwcAogICAgIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcAogICAgIGRv
bS9TcGFjZVNwbGl0U3RyaW5nLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMzY2MTcyYTE0Y2E5ZTM4OTJlMWU5ZWEwNTI4NDcyYWY1
MTdjMTMxLi4wZDg3MDdjOGE5OGIyMWE1Zjk2ZDEzODUwM2U0NzVjYmJiZGMwMmUyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDEwLTA4LTA5ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9y
IG91dCBhIGJhc2UgU2NyaXB0UnVubmVyIGFuZCBTY3JpcHRSdW5uZXJIb3N0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzczNgorCisgICAgICAgIFRo
aXMgaXMgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgd2lsbCBiZSBzaGFyZWQgYnkgQXN5
bmNTY3JpcHRSdW5uZXIgYW5kIERlZmVycmVkU2NyaXB0UnVubmVyLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBiZWNhdXNlIG5vIGRpZmZlcmVuY2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAg
ICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vUGVuZGlu
Z1NjcmlwdC5oOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ1NjcmlwdDo6c2V0U3RhcnRpbmdM
aW5lTnVtYmVyKTogTm93IHRoYXQgSSdtIHVzaW5nIFBlbmRpbmdTY3JpcHQgZm9yIGlubGluZSBz
Y3JpcHRzIGFnYWluLCB0aGlzIGhhcyBhIHB1cnBvc2UuCisgICAgICAgICogZG9tL1NjcmlwdFJ1
bm5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRVUkxGb3JTY3JpcHRF
eGVjdXRpb24pOiBFeGFjdCBjb3B5IGZyb20gSFRNTFNjcmlwdFJ1bm5lci4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVNjcmlwdExvYWRFdmVudCk6IEV4YWN0IGNvcHkgZnJvbSBIVE1MU2NyaXB0
UnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0RXJyb3JFdmVudCk6IEV4YWN0
IGNvcHkgZnJvbSBIVE1MU2NyaXB0UnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVu
bmVyOjpTY3JpcHRSdW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpzb3Vy
Y2VGcm9tUGVuZGluZ1NjcmlwdCk6IEV4YWN0IGNvcHkgZnJvbSBIVE1MU2NyaXB0UnVubmVyLgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KTogU2xpZ2h0IHJl
ZmFjdG9yLCBidXQgbm8gcmVhbCBkaWZmZXJlbmNlcyBmcm9tIEhUTUxTY3JpcHRSdW5uZXIuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2
ZW50KTogVGhpcyBtZXRob2QgZGlkbid0IGV4aXN0IGluIEhUTUxTY3JpcHRSdW5uZXIsIGJ1dCBp
dCBpcyB0aGUgaW50ZXJmYWNlIHRoYXQgbWF5IGJlIHNoYXJlZCB3aXRoIERlZmVycmVkU2NyaXB0
UnVubmVyIGFuZCBBc3luY1NjcmlwdFJ1bm5lci4gVGhpcyBjaGFuZ2VzIHRoZSBvcmRlciBvZiBy
ZWxlYXNpbmcgdGhlIFBlbmRpbmdTY3JpcHQncyBlbGVtZW50IGFuZCBjcmVhdGluZyB0aGUgTmVz
dGluZ0xldmVsLCBidXQgSSBiZWxpZXZlIHRoaXMgb3JkZXIgdG8gc3RpbGwgYmUgc2FmZS4gQWxz
bywgQVNTRVJUcyB3ZXJlIG1vdmVkIHRvIHRoZSBjYWxsaW5nIHBvaW50LgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0KTogRXhhY3QgY29weSBmcm9tIEhUTUxT
Y3JpcHRSdW5uZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6OndhdGNoRm9yTG9h
ZCk6IEV4YWN0IGNvcHkgZnJvbSBIVE1MU2NyaXB0UnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKTogRXhhY3QgY29weSBmcm9tIEhUTUxT
Y3JpcHRSdW5uZXIuCisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6flNjcmlwdFJ1bm5lcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRSdW5uZXI6OmRvY3VtZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0UnVubmVy
SG9zdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lckhvc3Q6On5TY3Jp
cHRSdW5uZXJIb3N0KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6SFRNTFNjcmlwdFJ1bm5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3JpcHRSZWFkeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCk6
IENhbGxzIG5ldyBTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KCks
IHdoaWxlIHByZXNlcnZpbmcgcHJldmlvdXMgQVNTRVJUcy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RQYXJzaW5nQmxvY2tpbmdT
Y3JpcHQpOiBDYWxscyBuZXcgU2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KCkuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQpOiBVc2VzIFBlbmRpbmdTY3Jp
cHQgZm9yIGlubGluZSBzY3JpcHQgYW5kIHByZXNlcnZlcyBhIHByZXZpb3VzIEFTU0VSVCBtb3Zl
ZCBvdXQgb2YgZXhlY3V0ZVNjcmlwdCgpLgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdFJ1bm5l
ci5oOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdFJ1bm5lckhvc3QuaDoKKwogMjAxMC0wOC0w
OSAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhYmEwZmYxMWE4NDg5YTRkMDFjMTIyODg0NTgw
ZTdhOWU5ZDEzOTVhLi5mNmM0ZDc5YzRjY2QxNTVlNWUzMjBiZTJlYTYxMGVjNzIyODcwYzI0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTExNDQsNiArMTE0NCw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oIFwKIAlXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBcCiAJV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIFwKKwlXZWJD
b3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwIFwKKwlXZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaCBc
CisJV2ViQ29yZS9kb20vU2NyaXB0UnVubmVySG9zdC5oIFwKIAlXZWJDb3JlL2RvbS9TZWxlY3RF
bGVtZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oIFwKIAlXZWJDb3JlL2Rv
bS9TZWxlY3Rvck5vZGVMaXN0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI5ODE0YjczZDc0NjFiZWJlZGE1MzQwMWEz
ODgwMGI4ZTIyNjMxODguLjE1Mzc2MjJkYTQ3NzUxMTU0NGFmYjgxODQzZmNhYTI3Y2I3NDc5OTMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0xMjUxLDYgKzEyNTEsOSBAQAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRFbGVtZW50
LmgnLAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCcsCisgICAgICAgICAgICAnZG9t
L1NjcmlwdFJ1bm5lci5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TY3JpcHRSdW5uZXIuaCcsCisg
ICAgICAgICAgICAnZG9tL1NjcmlwdFJ1bm5lckhvc3QuaCcsCiAgICAgICAgICAgICAnZG9tL1Nl
bGVjdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2VsZWN0RWxlbWVudC5oJywKICAg
ICAgICAgICAgICdkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMzU0NDU3OWY1NzZjYmNh
MTI3ZjdmMWIyNzI2NTNkODI2ZTU4MjRlNC4uZWRhMGU0NjJmMjUyNzBhMzVhODMxOGMxNzgyOWE2
NmU5NmEzODY2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3Jl
L1dlYkNvcmUucHJvCkBAIC01MzksNiArNTM5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1Nj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgXAogICAgIGRvbS9TY3JpcHRFbGVtZW50LmNwcCBc
CiAgICAgZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIFwKKyAgICBkb20vU2NyaXB0UnVu
bmVyLmNwcCBcCiAgICAgZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2VsZWN0b3JO
b2RlTGlzdC5jcHAgXAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYTkwZGY0MjZlMWFlMTJlYjgwMTBiNzIyZTJh
ODlmOGU3MmE5MDhlLi5hMDk3MDRjMDBlZjdjZTVjMWFjZGU3N2E5OGM1MDI3NzQyZmVlZWY0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMzMjA5LDYgKzMzMjA5LDE4
IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGRvbVxTY3JpcHRSdW5uZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNjcmlwdFJ1bm5lci5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNjcmlwdFJ1bm5lckhv
c3QuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGRvbVxTZWxlY3RFbGVtZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBkZmFjYTZkMzQxN2FhOWJj
N2NhNTg3M2U1MzIwZWJmODI5NmJkNTYuLmQ4ZDllN2ZlY2E1NWM0MWViYjc0OTBhYWYxNDFkZTkz
OTQyYTdiMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMzcwLDYgKzIzNzAsNyBAQAogCQk4OUNEMDI5MzExQzg1Qjg3MDA3MEI3OTEgLyogSlNCbG9i
QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4OUNEMDI5MTExQzg1Qjg3MDA3MEI3OTEgLyogSlNCbG9iQnVpbGRlci5jcHAgKi87IH07CiAJ
CTg5Q0QwMjk0MTFDODVCODcwMDcwQjc5MSAvKiBKU0Jsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUNEMDI5MjExQzg1Qjg3MDA3MEI3
OTEgLyogSlNCbG9iQnVpbGRlci5oICovOyB9OwogCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgzNkEg
LyogRG9jdW1lbnRMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogRG9jdW1lbnRMb2FkVGlt
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OEEyMzA1ODQxMjBDRTZEQzAwOTAyODRGIC8qIFNjcmlwdFJ1bm5lckhvc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBMjMwNTgzMTIwQ0U2REMwMDkw
Mjg0RiAvKiBTY3JpcHRSdW5uZXJIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEE0MTNBRTAxMjA3QkJBNTAwODIwMTZFIC8qIEFzeW5jU2Ny
aXB0UnVubmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4QTQxM0FERTEyMDdCQkE1MDA4MjAxNkUgLyogQXN5bmNTY3JpcHRSdW5uZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4QTQxM0FFMTEyMDdC
QkE1MDA4MjAxNkUgLyogQXN5bmNTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE0MTNBREYxMjA3QkJBNTAwODIwMTZFIC8qIEFz
eW5jU2NyaXB0UnVubmVyLmNwcCAqLzsgfTsKIAkJOEE3Q0M5NkIxMjA3NkQ3MzAwMUQ0NTg4IC8q
IFBlbmRpbmdTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhBN0NDOTZBMTIwNzZENzMwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzODMsNiArMjM4
NCw4IEBACiAJCThBOUE1ODc1MTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTlBNTg3MzExRTg0
QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oICovOyB9OwogCQk4QTlBNTg4NzExRTg0RjM3
MDA4QUNGRDEgLyogSlNUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEE5QTU4NzYxMUU4NEM5ODAwOEFDRkQxIC8qIEpTVGltaW5nLmNwcCAq
LzsgfTsKIAkJOEE5QTU4ODgxMUU4NEYzNzAwOEFDRkQxIC8qIEpTVGltaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTlBNTg3NzExRTg0Qzk4MDA4
QUNGRDEgLyogSlNUaW1pbmcuaCAqLzsgfTsKKwkJOEFCRTRDNjIxMjBFMTczQzAwRDZGQkQ1IC8q
IFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFCRTRDNjExMjBFMTczQzAwRDZGQkQ1IC8qIFNjcmlwdFJ1bm5lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCThBQkU0QzY0MTIwRTE3
NTEwMEQ2RkJENSAvKiBTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOEFCRTRDNjMxMjBFMTc1MTAwRDZGQkQ1IC8qIFNjcmlwdFJ1
bm5lci5jcHAgKi87IH07CiAJCThBRjRFNTU1MTFEQzVBMzYwMDBFRDNERSAvKiBOYXZpZ2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRF
NTUyMTFEQzVBMzYwMDBFRDNERSAvKiBOYXZpZ2F0aW9uLmNwcCAqLzsgfTsKIAkJOEFGNEU1NTYx
MURDNUEzNjAwMEVEM0RFIC8qIE5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTUzMTFEQzVBMzYwMDBFRDNERSAvKiBOYXZpZ2F0
aW9uLmggKi87IH07CiAJCThBRjRFNTVCMTFEQzVBNjMwMDBFRDNERSAvKiBUaW1pbmcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTgxMURD
NUE2MzAwMEVEM0RFIC8qIFRpbWluZy5jcHAgKi87IH07CkBAIC04MTkwLDYgKzgxOTMsNyBAQAog
CQk4OUNEMDI5MTExQzg1Qjg3MDA3MEI3OTEgLyogSlNCbG9iQnVpbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jsb2JCdWlsZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODlDRDAyOTIxMUM4NUI4NzAwNzBCNzkxIC8qIEpTQmxvYkJ1
aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCbG9iQnVpbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEg
LyogRG9jdW1lbnRMb2FkVGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERvY3VtZW50TG9hZFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4QTIz
MDU4MzEyMENFNkRDMDA5MDI4NEYgLyogU2NyaXB0UnVubmVySG9zdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRSdW5uZXJIb3N0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCThBNDEzQURFMTIwN0JCQTUwMDgyMDE2RSAvKiBBc3luY1NjcmlwdFJ1bm5l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1NjcmlwdFJ1bm5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTQxM0FERjEyMDdCQkE1MDA4MjAxNkUg
LyogQXN5bmNTY3JpcHRSdW5uZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXN5bmNTY3JpcHRSdW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4QTdDQzk2QTEyMDc2RDczMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5kaW5nU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MjA0LDYgKzgyMDgsOCBAQAogCQk4QTlBNTg3MzExRTg0QzgxMDA4QUNG
RDEgLyogSlNQZXJmb3JtYW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1BlcmZvcm1hbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBOUE1ODc2MTFF
ODRDOTgwMDhBQ0ZEMSAvKiBKU1RpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1RpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThB
OUE1ODc3MTFFODRDOTgwMDhBQ0ZEMSAvKiBKU1RpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1RpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
QUJFNEM2MTEyMEUxNzNDMDBENkZCRDUgLyogU2NyaXB0UnVubmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFJ1bm5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4QUJFNEM2MzEyMEUxNzUxMDBENkZCRDUgLyogU2NyaXB0UnVubmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFJ1bm5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTUyMTFEQzVBMzYwMDBFRDNERSAvKiBOYXZp
Z2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUY0RTU1MzExREM1QTM2MDAw
RUQzREUgLyogTmF2aWdhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTU0MTFEQzVB
MzYwMDBFRDNERSAvKiBOYXZpZ2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZp
Z2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzUwLDYgKzE3MzU2
LDkgQEAKIAkJCQkwOEE0ODQ3NjBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oICov
LAogCQkJCUUxMUM5REFGMEVCMzY5OTUwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcCAqLywKIAkJCQlFMTFDOUQ5QTBFQjM2ODEyMDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oICovLAorCQkJCThBQkU0QzYzMTIwRTE3NTEwMEQ2RkJENSAvKiBTY3JpcHRSdW5u
ZXIuY3BwICovLAorCQkJCThBQkU0QzYxMTIwRTE3M0MwMEQ2RkJENSAvKiBTY3JpcHRSdW5uZXIu
aCAqLywKKwkJCQk4QTIzMDU4MzEyMENFNkRDMDA5MDI4NEYgLyogU2NyaXB0UnVubmVySG9zdC5o
ICovLAogCQkJCTA4NEFFQkUyMEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmNwcCAq
LywKIAkJCQkwODRBRUJFMzBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5oICovLAog
CQkJCUJDN0ZBNjgwMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCAqLywK
QEAgLTIwMTM5LDYgKzIwMTQ4LDggQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyog
WFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0RDZFMDBF
Q0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJFMDExMTM2RThD
RTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4QTIzMDU4NDEyMENF
NkRDMDA5MDI4NEYgLyogU2NyaXB0UnVubmVySG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOEFC
RTRDNjIxMjBFMTczQzAwRDZGQkQ1IC8qIFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yMjU2Myw2ICsyMjU3NCw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1
MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdE
RDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOEFCRTRDNjQxMjBFMTc1MTAwRDZGQkQ1IC8qIFNjcmlwdFJ1bm5lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuaCBiL1dlYkNvcmUv
ZG9tL1BlbmRpbmdTY3JpcHQuaAppbmRleCA4MDVmN2ZmOWVjZGZhMzQ5ZDBiNzBmZTJiNGE1MmIy
YWE0NTBlYTczLi41MTYwZDRiOGU4YzVlNzRmOTQwMDFjYzA0NDBiODYyYWYwYmQxYTI4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmgKKysrIGIvV2ViQ29yZS9kb20vUGVu
ZGluZ1NjcmlwdC5oCkBAIC01MSw5ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIH5QZW5kaW5nU2Ny
aXB0KCk7CiAKLSAgICAvLyBGSVhNRTogTm8gc2V0dGVyIG1lYW5zIHRoaXMgaXMgbmV2ZXIgc2V0
IHRvIGFueXRoaW5nIG90aGVyIHRoYW4gMC4KLSAgICAvLyBUaGlzIGlzIGVpdGhlciB1bm5lY2Vz
c2FyeSBvciBpbmNvcnJlY3QuCiAgICAgaW50IHN0YXJ0aW5nTGluZU51bWJlcigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnRpbmdMaW5lTnVtYmVyOyB9CisgICAgdm9pZCBzZXRTdGFydGluZ0xpbmVO
dW1iZXIoaW50IGkpIHsgbV9zdGFydGluZ0xpbmVOdW1iZXIgPSBpOyB9CiAKICAgICBib29sIHdh
dGNoaW5nRm9yTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2F0Y2hpbmdGb3JMb2FkOyB9CiAgICAg
dm9pZCBzZXRXYXRjaGluZ0ZvckxvYWQoYm9vbCBiKSB7IG1fd2F0Y2hpbmdGb3JMb2FkID0gYjsg
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1dlYkNvcmUvZG9t
L1NjcmlwdFJ1bm5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiYTZmYTc3NmE3MDc5MGE5ZGI2MGJkNTMz
Y2Y2NmUyMTUwNTU5MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5l
ci5jcHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0UnVu
bmVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJEb2NMb2FkZXIu
aCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGVuZGluZ1Nj
cmlwdC5oIgorI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRSdW5u
ZXJIb3N0LmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBLVVJMIGRvY3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKworICAgIC8vIFVzZSB0aGUgVVJMIG9mIHRoZSBj
dXJyZW50bHkgYWN0aXZlIGRvY3VtZW50IGZvciB0aGlzIGZyYW1lLgorICAgIHJldHVybiBkb2N1
bWVudC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCk7Cit9CisKK2lubGluZSBQYXNzUmVmUHRy
PEV2ZW50PiBjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKQoreworICAgIHJldHVybiBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7Cit9CisKK2lubGluZSBQ
YXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVTY3JpcHRFcnJvckV2ZW50KCkKK3sKKyAgICByZXR1cm4g
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOworfQor
CitTY3JpcHRSdW5uZXI6OlNjcmlwdFJ1bm5lcihEb2N1bWVudCogZG9jdW1lbnQsIFNjcmlwdFJ1
bm5lckhvc3QqIGhvc3QpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9ob3N0
KGhvc3QpCit7CisgICAgQVNTRVJUKG1faG9zdCk7Cit9CisKK1NjcmlwdFNvdXJjZUNvZGUgU2Ny
aXB0UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5nU2NyaXB0JiBz
Y3JpcHQsIGJvb2wmIGVycm9yT2NjdXJyZWQpIGNvbnN0Cit7CisgICAgaWYgKHNjcmlwdC5jYWNo
ZWRTY3JpcHQoKSkgeworICAgICAgICBlcnJvck9jY3VycmVkID0gc2NyaXB0LmNhY2hlZFNjcmlw
dCgpLT5lcnJvck9jY3VycmVkKCk7CisgICAgICAgIEFTU0VSVChzY3JpcHQuY2FjaGVkU2NyaXB0
KCktPmlzTG9hZGVkKCkpOworICAgICAgICByZXR1cm4gU2NyaXB0U291cmNlQ29kZShzY3JpcHQu
Y2FjaGVkU2NyaXB0KCkpOworICAgIH0KKyAgICBlcnJvck9jY3VycmVkID0gZmFsc2U7CisgICAg
cmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LmVsZW1lbnQoKS0+dGV4dENvbnRlbnQoKSwg
ZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24obV9kb2N1bWVudCksIHNjcmlwdC5zdGFydGlu
Z0xpbmVOdW1iZXIoKSk7Cit9CisKK2Jvb2wgU2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KFBl
bmRpbmdTY3JpcHQmIHBlbmRpbmdTY3JpcHQsIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVVJM
LCBFbGVtZW50KiBzY3JpcHRFbGVtZW50KSBjb25zdAoreworICAgIEFTU0VSVCghcGVuZGluZ1Nj
cmlwdC5lbGVtZW50KCkpOworICAgIGlmICghbV9ob3N0LT5zaG91bGRMb2FkRXh0ZXJuYWxTY3Jp
cHRGcm9tU3JjKHNvdXJjZVVSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhN
RTogV2UgbmVlZCB0byByZXNvbHZlIHRoZSB1cmwgcmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQuCisg
ICAgaWYgKCFzY3JpcHRFbGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChzb3VyY2VVUkwp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcGVuZGluZ1NjcmlwdC5hZG9wdEVsZW1lbnQo
c2NyaXB0RWxlbWVudCk7CisgICAgLy8gVGhpcyBzaG91bGQgY29ycmVjdGx5IHJldHVybiAwIGZv
ciBlbXB0eSBvciBpbnZhbGlkIHNvdXJjZVVSTHMuCisgICAgQ2FjaGVkU2NyaXB0KiBjYWNoZWRT
Y3JpcHQgPSBtX2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChzb3VyY2VVUkws
IHRvU2NyaXB0RWxlbWVudChzY3JpcHRFbGVtZW50KS0+c2NyaXB0Q2hhcnNldCgpKTsKKyAgICBp
ZiAoIWNhY2hlZFNjcmlwdCkgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBEaXNwYXRj
aCBlcnJvciBldmVudC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHBlbmRp
bmdTY3JpcHQuc2V0Q2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQ
ZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KSBjb25zdAoreworICAgIGJvb2wgZXJyb3JPY2N1
cnJlZCA9IGZhbHNlOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IHNvdXJjZUZy
b21QZW5kaW5nU2NyaXB0KHBlbmRpbmdTY3JpcHQsIGVycm9yT2NjdXJyZWQpOworICAgIC8vIENs
ZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJhbmN5IGZyb20gZXhl
Y3V0ZVNjcmlwdCgpCisgICAgUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQgPSBwZW5kaW5n
U2NyaXB0LnJlbGVhc2VFbGVtZW50QW5kQ2xlYXIoKTsKKyAgICBpZiAoZXJyb3JPY2N1cnJlZCkK
KyAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRFcnJvckV2
ZW50KCkpOworICAgIGVsc2UgeworICAgICAgICBleGVjdXRlU2NyaXB0KHNjcmlwdEVsZW1lbnQu
Z2V0KCksIHNvdXJjZUNvZGUpOworICAgICAgICBzY3JpcHRFbGVtZW50LT5kaXNwYXRjaEV2ZW50
KGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgU2NyaXB0UnVubmVy
OjpleGVjdXRlU2NyaXB0KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUpIGNvbnN0Cit7CisgICAgU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9
IHRvU2NyaXB0RWxlbWVudChlbGVtZW50KTsKKyAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7Cisg
ICAgaWYgKCFzY3JpcHRFbGVtZW50LT5zaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIW1fZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3Vy
Y2VDb2RlKTsKK30KKwordm9pZCBTY3JpcHRSdW5uZXI6OndhdGNoRm9yTG9hZChQZW5kaW5nU2Ny
aXB0JiBwZW5kaW5nU2NyaXB0KSBjb25zdAoreworICAgIEFTU0VSVCghcGVuZGluZ1NjcmlwdC53
YXRjaGluZ0ZvckxvYWQoKSk7CisgICAgbV9ob3N0LT53YXRjaEZvckxvYWQocGVuZGluZ1Njcmlw
dC5jYWNoZWRTY3JpcHQoKSk7CisgICAgcGVuZGluZ1NjcmlwdC5zZXRXYXRjaGluZ0ZvckxvYWQo
dHJ1ZSk7Cit9CisKK3ZvaWQgU2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRp
bmdTY3JpcHQmIHBlbmRpbmdTY3JpcHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHBlbmRpbmdTY3Jp
cHQud2F0Y2hpbmdGb3JMb2FkKCkpOworICAgIG1faG9zdC0+c3RvcFdhdGNoaW5nRm9yTG9hZChw
ZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpKTsKKyAgICBwZW5kaW5nU2NyaXB0LnNldFdhdGNo
aW5nRm9yTG9hZChmYWxzZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Njcmlw
dFJ1bm5lci5oIGIvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJkZGQ1
ODliYjBjZmMxNmJiNTIxYjYyMzlhNDU3ZWZhY2FlOWMxNAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFNjcmlwdFJ1bm5lcl9o
CisjZGVmaW5lIFNjcmlwdFJ1bm5lcl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEF0b21pY1N0cmluZzsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKK2NsYXNz
IFBlbmRpbmdTY3JpcHQ7CitjbGFzcyBTY3JpcHRSdW5uZXJIb3N0OworY2xhc3MgU2NyaXB0U291
cmNlQ29kZTsKKworY2xhc3MgU2NyaXB0UnVubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JpcHRSdW5uZXIoKSB7IH0KKworcHJvdGVjdGVkOgorICAg
IFNjcmlwdFJ1bm5lcihEb2N1bWVudCosIFNjcmlwdFJ1bm5lckhvc3QqKTsKKworICAgIFNjcmlw
dFNvdXJjZUNvZGUgc291cmNlRnJvbVBlbmRpbmdTY3JpcHQoY29uc3QgUGVuZGluZ1NjcmlwdCYs
IGJvb2wmIGVycm9yT2NjdXJyZWQpIGNvbnN0OworICAgIGJvb2wgcmVxdWVzdFNjcmlwdChQZW5k
aW5nU2NyaXB0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VVUkwsIEVsZW1lbnQqKSBjb25z
dDsKKyAgICB2b2lkIHdhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0JikgY29uc3Q7CisgICAgdm9p
ZCBzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmKSBjb25zdDsKKyAgICB2b2lkIGV4
ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmKSBjb25zdDsKKyAgICB2
b2lkIGV4ZWN1dGVTY3JpcHQoRWxlbWVudCosIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKSBjb25z
dDsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KKwor
cHJpdmF0ZToKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBTY3JpcHRSdW5uZXJIb3N0
KiBtX2hvc3Q7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2Ny
aXB0UnVubmVySG9zdC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVySG9zdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIzNWMzNWFiNDc5NWU4MTJmNzM4YzMxNzIwODQwNTk2ZWM5MzEwY2IKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXJIb3N0LmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
U2NyaXB0UnVubmVySG9zdF9oCisjZGVmaW5lIFNjcmlwdFJ1bm5lckhvc3RfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEF0b21pY1N0cmluZzsKK2NsYXNzIENhY2hlZFJlc291cmNl
OworCitjbGFzcyBTY3JpcHRSdW5uZXJIb3N0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3Jp
cHRSdW5uZXJIb3N0KCkgeyB9CisKKyAgICAvLyBJbXBsZW1lbnRvcnMgc2hvdWxkIGNhbGwgY2Fj
aGVkUmVzb3VyY2UtPmFkZENsaWVudCgpIGhlcmUgb3Igc29vbiBhZnRlci4KKyAgICB2aXJ0dWFs
IHZvaWQgd2F0Y2hGb3JMb2FkKENhY2hlZFJlc291cmNlKikgPSAwOworICAgIC8vIEltcGxlbWVu
dG9ycyBtdXN0IGNhbGwgY2FjaGVkUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgpIGltbWVkaWF0ZWx5
LgorICAgIHZpcnR1YWwgdm9pZCBzdG9wV2F0Y2hpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKikg
PSAwOworCisgICAgLy8gSW1wbGVtZW50b3JzIGNhbiBibG9jayBjZXJ0YWluIHNjcmlwdCBsb2Fk
cyAoZm9yIFhTU0F1ZGl0b3IsIGV0Yy4pCisgICAgdmlydHVhbCBib29sIHNob3VsZExvYWRFeHRl
cm5hbFNjcmlwdEZyb21TcmMoY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCA0YTkwNThmYWY0NWNkODUyMWJk
M2FhMzlhZTEwZjFkNWIwZjdkNWZlLi4xNjBlYzJhYzEzZGUxMGYzNTViODhkMjM3YWNiY2EwMjc2
NmY4ZDc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0yOCwxMCArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCi0jaW5j
bHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkV2ZW50
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MU2NyaXB0UnVubmVySG9zdC5o
IgogI2luY2x1ZGUgIkhUTUxJbnB1dFN0cmVhbS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpA
QCAtNjMsNyArNjAsNyBAQCBwcml2YXRlOgogfTsKIAogSFRNTFNjcmlwdFJ1bm5lcjo6SFRNTFNj
cmlwdFJ1bm5lcihEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxTY3JpcHRSdW5uZXJIb3N0KiBob3N0
KQotICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICA6IFNjcmlwdFJ1bm5lcihkb2N1bWVu
dCwgaG9zdCkKICAgICAsIG1faG9zdChob3N0KQogICAgICwgbV9zY3JpcHROZXN0aW5nTGV2ZWwo
MCkKICAgICAsIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyhmYWxzZSkKQEAgLTc4
LDM5ICs3NSw5IEBAIEhUTUxTY3JpcHRSdW5uZXI6On5IVE1MU2NyaXB0UnVubmVyKCkKICAgICAg
ICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiB9CiAKLXN0
YXRpYyBLVVJMIGRvY3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVu
dCkKLXsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAg
cmV0dXJuIEtVUkwoKTsKLQotICAgIC8vIFVzZSB0aGUgVVJMIG9mIHRoZSBjdXJyZW50bHkgYWN0
aXZlIGRvY3VtZW50IGZvciB0aGlzIGZyYW1lLgotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci19Ci0KLWlubGluZSBQYXNzUmVmUHRyPEV2ZW50PiBjcmVh
dGVTY3JpcHRMb2FkRXZlbnQoKQotewotICAgIHJldHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci19Ci0KLWlubGluZSBQYXNzUmVmUHRyPEV2
ZW50PiBjcmVhdGVTY3JpcHRFcnJvckV2ZW50KCkKLXsKLSAgICByZXR1cm4gRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOwotfQotCi1TY3JpcHRTb3Vy
Y2VDb2RlIEhUTUxTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBl
bmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9vbCYgZXJyb3JPY2N1cnJlZCkKLXsKLSAgICBpZiAoc2Ny
aXB0LmNhY2hlZFNjcmlwdCgpKSB7Ci0gICAgICAgIGVycm9yT2NjdXJyZWQgPSBzY3JpcHQuY2Fj
aGVkU2NyaXB0KCktPmVycm9yT2NjdXJyZWQoKTsKLSAgICAgICAgQVNTRVJUKHNjcmlwdC5jYWNo
ZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2Rl
KHNjcmlwdC5jYWNoZWRTY3JpcHQoKSk7Ci0gICAgfQotICAgIGVycm9yT2NjdXJyZWQgPSBmYWxz
ZTsKLSAgICByZXR1cm4gU2NyaXB0U291cmNlQ29kZShzY3JpcHQuZWxlbWVudCgpLT50ZXh0Q29u
dGVudCgpLCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50KSwgc2NyaXB0
LnN0YXJ0aW5nTGluZU51bWJlcigpKTsKLX0KLQogYm9vbCBIVE1MU2NyaXB0UnVubmVyOjppc1Bl
bmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5kaW5nU2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgbV9o
YXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzID0gIW1fZG9jdW1lbnQtPmhhdmVTdHlsZXNo
ZWV0c0xvYWRlZCgpOworICAgIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyA9ICFk
b2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKTsKICAgICBpZiAobV9oYXNTY3JpcHRz
V2FpdGluZ0ZvclN0eWxlc2hlZXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHNj
cmlwdC5jYWNoZWRTY3JpcHQoKSAmJiAhc2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgp
KQpAQCAtMTIxLDU5ICs4OCwyMyBAQCBib29sIEhUTUxTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1Nj
cmlwdFJlYWR5KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCkKIHZvaWQgSFRNTFNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHQoKQogewogICAgIEFTU0VSVCghbV9zY3JpcHROZXN0
aW5nTGV2ZWwpOwotICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSk7Ci0gICAgYm9vbCBlcnJvck9jY3VycmVkID0gZmFsc2U7CisgICAgQVNTRVJUKGRvY3VtZW50
KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKICAgICBBU1NFUlQoaXNQZW5kaW5nU2NyaXB0
UmVhZHkobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpKTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNv
dXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChtX3BhcnNpbmdCbG9ja2luZ1Njcmlw
dCwgZXJyb3JPY2N1cnJlZCk7CiAKICAgICAvLyBTdG9wIHdhdGNoaW5nIGxvYWRzIGJlZm9yZSBl
eGVjdXRlU2NyaXB0IHRvIHByZXZlbnQgcmVjdXJzaW9uIGlmIHRoZSBzY3JpcHQgcmVsb2FkcyBp
dHNlbGYuCiAgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYm
IG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKQogICAgICAgICBzdG9w
V2F0Y2hpbmdGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKIAotICAgIC8vIENsZWFy
IHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0
ZVNjcmlwdCgpCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQgPSBtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdC5yZWxlYXNlRWxlbWVudEFuZENsZWFyKCk7CiAgICAgewogICAgICAgICBO
ZXN0U2NyaXB0IG5lc3RpbmdMZXZlbChtX3NjcmlwdE5lc3RpbmdMZXZlbCwgbV9ob3N0LT5pbnB1
dFN0cmVhbSgpKTsKLSAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQpCi0gICAgICAgICAgICBzY3Jp
cHRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNjcmlwdEVycm9yRXZlbnQoKSk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgZXhlY3V0ZVNjcmlwdChzY3JpcHRFbGVtZW50LmdldCgp
LCBzb3VyY2VDb2RlKTsKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQo
Y3JlYXRlU2NyaXB0TG9hZEV2ZW50KCkpOwotICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGRv
Y3VtZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzRXhl
Y3V0aW5nU2NyaXB0KCkpOworICAgICAgICBleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudCht
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiAgICAgfQogICAgIEFTU0VSVCghbV9zY3JpcHROZXN0
aW5nTGV2ZWwpOwogfQogCi12b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHQoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKLXsKLSAg
ICAvLyBGSVhNRTogV2UgZG8gbm90IGJsb2NrIGlubGluZSA8c2NyaXB0PiB0YWdzIG9uIHN0eWxl
c2hlZXRzIGZvciBub3cuCi0gICAgLy8gV2hlbiB3ZSBkbywgIHx8ICFlbGVtZW50LT5oYXNBdHRy
aWJ1dGUoc3JjQXR0cikgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbQotICAgIC8vIHRoZSBBU1NFUlQg
YmVsb3cuICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDQ3
Ci0gICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIHx8ICFlbGVt
ZW50LT5oYXNBdHRyaWJ1dGUoc3JjQXR0cikpOwotICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVs
ZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgQVNTRVJUKHNjcmlwdEVsZW1l
bnQpOwotICAgIGlmICghc2NyaXB0RWxlbWVudC0+c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGlzRXhlY3V0aW5nU2NyaXB0KCkpOwotICAg
IGlmICghbV9kb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1l
bnQtPmZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOwotfQotCi12
b2lkIEhUTUxTY3JpcHRSdW5uZXI6OndhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5n
U2NyaXB0KQotewotICAgIEFTU0VSVCghcGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSk7
Ci0gICAgbV9ob3N0LT53YXRjaEZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSk7
Ci0gICAgcGVuZGluZ1NjcmlwdC5zZXRXYXRjaGluZ0ZvckxvYWQodHJ1ZSk7Ci19Ci0KLXZvaWQg
SFRNTFNjcmlwdFJ1bm5lcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5k
aW5nU2NyaXB0KQotewotICAgIEFTU0VSVChwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgp
KTsKLSAgICBtX2hvc3QtPnN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRT
Y3JpcHQoKSk7Ci0gICAgcGVuZGluZ1NjcmlwdC5zZXRXYXRjaGluZ0ZvckxvYWQoZmFsc2UpOwot
fQotCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBtYXRjaCAxMC4yLjUuMTEgIkFuIGVuZCB0YWcg
d2hvc2UgdGFnIG5hbWUgaXMgJ3NjcmlwdCciCiAvLyBTY3JpcHQgaGFuZGxpbmcgbGl2ZXMgb3V0
c2lkZSB0aGUgdHJlZSBidWlsZGVyIHRvIGtlZXAgdGhlIGVhY2ggY2xhc3Mgc2ltcGxlLgogYm9v
bCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlKFBhc3NSZWZQdHI8RWxlbWVudD4gc2NyaXB0RWxl
bWVudCwgaW50IHN0YXJ0TGluZSkKQEAgLTIyNCwyOSArMTU1LDE2IEBAIGJvb2wgSFRNTFNjcmlw
dFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogICAgIC8vIHRv
IHByZXZlbnQgcGFyc2VyIG9yIHNjcmlwdCByZS1lbnRyeSBkdXJpbmcgPC9zdHlsZT4gcGFyc2lu
Zy4KICAgICBBU1NFUlQoaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpKTsKICAgICBB
U1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKLSAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2
ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOworICAgIEFTU0VSVChkb2N1bWVudCgpLT5oYXZlU3R5bGVz
aGVldHNMb2FkZWQoKSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRz
KCk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cmVxdWVzdFNjcmlwdChFbGVtZW50KiBz
Y3JpcHQpCit2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RQYXJzaW5nQmxvY2tpbmdTY3Jp
cHQoRWxlbWVudCogc2NyaXB0RWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VVUkwp
CiB7Ci0gICAgQVNTRVJUKCFtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50KCkpOwotICAg
IEF0b21pY1N0cmluZyBzcmNWYWx1ZSA9IHNjcmlwdC0+Z2V0QXR0cmlidXRlKHNyY0F0dHIpOwot
ICAgIC8vIEFsbG93IHRoZSBob3N0IHRvIGRpc2xsb3cgc2NyaXB0IGxvYWRzICh1c2luZyB0aGUg
WFNTQXVkaXRvciwgZXRjLikKLSAgICBpZiAoIW1faG9zdC0+c2hvdWxkTG9hZEV4dGVybmFsU2Ny
aXB0RnJvbVNyYyhzcmNWYWx1ZSkpCisgICAgaWYgKCFyZXF1ZXN0U2NyaXB0KG1fcGFyc2luZ0Js
b2NraW5nU2NyaXB0LCBzb3VyY2VVUkwsIHNjcmlwdEVsZW1lbnQpKQogICAgICAgICByZXR1cm47
Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcmVzb2x2ZSB0aGUgdXJsIHJlbGF0aXZlIHRvIHRo
ZSBlbGVtZW50LgotICAgIGlmICghc2NyaXB0LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChzcmNW
YWx1ZSkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5hZG9w
dEVsZW1lbnQoc2NyaXB0KTsKLSAgICAvLyBUaGlzIHNob3VsZCBjb3JyZWN0bHkgcmV0dXJuIDAg
Zm9yIGVtcHR5IG9yIGludmFsaWQgc3JjVmFsdWVzLgotICAgIENhY2hlZFNjcmlwdCogY2FjaGVk
U2NyaXB0ID0gbV9kb2N1bWVudC0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc3JjVmFsdWUs
IHRvU2NyaXB0RWxlbWVudChzY3JpcHQpLT5zY3JpcHRDaGFyc2V0KCkpOwotICAgIGlmICghY2Fj
aGVkU2NyaXB0KSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIERpc3BhdGNoIGVycm9y
IGV2ZW50LgotICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgbV9wYXJzaW5nQmxvY2tpbmdT
Y3JpcHQuc2V0Q2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCk7CisgICAgQVNTRVJUKG1fcGFyc2lu
Z0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpKTsKIAogICAgIC8vIFdlIG9ubHkgY2FyZSBh
Ym91dCBhIGxvYWQgY2FsbGJhY2sgaWYgY2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5CiAgICAg
Ly8gaW4gdGhlIGNhY2hlLiAgQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdApAQCAtMjY3LDEyICsxODUsMjEgQEAgdm9pZCBIVE1MU2NyaXB0UnVu
bmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKQog
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBldmVudCBmb3Igc3VwcG9ydAogCiAgICAgICAg
IGlmIChzY3JpcHQtPmhhc0F0dHJpYnV0ZShzcmNBdHRyKSkgeworICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBzb3VyY2VVUkwgPSBzY3JpcHQtPmdldEF0dHJpYnV0ZShzcmNBdHRyKTsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgZGVmZXIgYW5kIGFzeW5jCi0gICAgICAgICAg
ICByZXF1ZXN0U2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICByZXF1ZXN0UGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0KHNjcmlwdCwgc291cmNlVVJMKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBkbyBub3QgYmxvY2sgaW5saW5lIDxzY3JpcHQ+IHRhZ3Mgb24gc3R5
bGVzaGVldHMgdG8gbWF0Y2ggdGhlCi0gICAgICAgICAgICAvLyBvbGQgcGFyc2VyIGZvciBub3cu
ICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDQ3Ci0gICAg
ICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LT50ZXh0Q29udGVudCgp
LCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50KSwgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKKyAgICAgICAgICAgIC8vIG9sZCBwYXJzZXIgZm9yIG5vdy4gIFdoZW4gd2UgZG8s
IHRoZSBBU1NFUlQgYmVsb3cgc2hvdWxkIGJlIGFkZGVkLgorICAgICAgICAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA0NworICAgICAgICAgICAg
Ly8gQVNTRVJUKGRvY3VtZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKKworICAgICAgICAgICAgUGVuZGluZ1Nj
cmlwdCBwZW5kaW5nU2NyaXB0OworICAgICAgICAgICAgcGVuZGluZ1NjcmlwdC5hZG9wdEVsZW1l
bnQoc2NyaXB0KTsKKyAgICAgICAgICAgIHBlbmRpbmdTY3JpcHQuc2V0U3RhcnRpbmdMaW5lTnVt
YmVyKHN0YXJ0aW5nTGluZU51bWJlcik7CisgICAgICAgICAgICBib29sIHVudXNlZEVycm9yT2Nj
dXJyZWQ7CisgICAgICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBzb3VyY2VG
cm9tUGVuZGluZ1NjcmlwdChwZW5kaW5nU2NyaXB0LCB1bnVzZWRFcnJvck9jY3VycmVkKTsKICAg
ICAgICAgICAgIGV4ZWN1dGVTY3JpcHQoc2NyaXB0LCBzb3VyY2VDb2RlKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmggYi9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5oCmluZGV4IDg1ODAxYjI5NDQxMmQ4N2E0OTBlMDZj
OTg1ZmQ2NWZhYmNjMTU1MzAuLmE3YzA2Njk5YzBjNzgxN2M1YzlkYjUwYzgwYzUyNmNiMDY1OGQz
MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAjZGVmaW5l
IEhUTUxTY3JpcHRSdW5uZXJfaAogCiAjaW5jbHVkZSAiUGVuZGluZ1NjcmlwdC5oIgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXRv
bWljU3RyaW5nOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CiBj
bGFzcyBEb2N1bWVudDsKQEAgLTQwLDcgKzQxLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1M
U2NyaXB0UnVubmVySG9zdDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKLWNsYXNzIEhUTUxT
Y3JpcHRSdW5uZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgSFRNTFNjcmlwdFJ1bm5l
ciA6IHB1YmxpYyBTY3JpcHRSdW5uZXIgewogcHVibGljOgogICAgIEhUTUxTY3JpcHRSdW5uZXIo
RG9jdW1lbnQqLCBIVE1MU2NyaXB0UnVubmVySG9zdCopOwogICAgIH5IVE1MU2NyaXB0UnVubmVy
KCk7CkBAIC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGV4ZWN1dGVTY3JpcHRzV2Fp
dGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBib29sIGhhc1NjcmlwdHNXYWl0aW5n
Rm9yU3R5bGVzaGVldHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5
bGVzaGVldHM7IH0KICAgICBib29sIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRz
KCk7CisgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JQYXJzaW5nKCk7CiAKICAgICBi
b29sIGlzRXhlY3V0aW5nU2NyaXB0KCkgeyByZXR1cm4gISFtX3NjcmlwdE5lc3RpbmdMZXZlbDsg
fQogCkBAIC02MSwxOCArNjMsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGV4ZWN1dGVQYXJzaW5n
QmxvY2tpbmdTY3JpcHRzKCk7CiAgICAgdm9pZCBleGVjdXRlUGVuZGluZ1NjcmlwdCgpOwogCi0g
ICAgdm9pZCByZXF1ZXN0U2NyaXB0KEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlcXVlc3RQYXJzaW5n
QmxvY2tpbmdTY3JpcHQoRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVVJMKTsK
ICAgICB2b2lkIHJ1blNjcmlwdChFbGVtZW50KiwgaW50IHN0YXJ0aW5nTGluZU51bWJlcik7CiAK
LSAgICAvLyBIZWxwZXJzIGZvciBkZWFsaW5nIHdpdGggSFRNTFNjcmlwdFJ1bm5lckhvc3QKLSAg
ICB2b2lkIHdhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0Jik7Ci0gICAgdm9pZCBzdG9wV2F0Y2hp
bmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmKTsKLSAgICB2b2lkIGV4ZWN1dGVTY3JpcHQoRWxlbWVu
dCosIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLQogICAgIGJvb2wgaXNQZW5kaW5nU2NyaXB0
UmVhZHkoY29uc3QgUGVuZGluZ1NjcmlwdCYpOwotICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNl
RnJvbVBlbmRpbmdTY3JpcHQoY29uc3QgUGVuZGluZ1NjcmlwdCYsIGJvb2wmIGVycm9yT2NjdXJy
ZWQpOwogCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgSFRNTFNjcmlwdFJ1bm5lckhv
c3QqIG1faG9zdDsKICAgICBQZW5kaW5nU2NyaXB0IG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0Owog
ICAgIHVuc2lnbmVkIG1fc2NyaXB0TmVzdGluZ0xldmVsOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxTY3JpcHRSdW5uZXJIb3N0LmggYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5l
ckhvc3QuaAppbmRleCBhMTI5NTIwNzlmODk0NjcxYjQ2MWU2NzE0MTY1ZDc4NmFhZTIxNzEzLi40
YTE1N2UxMzI5MDExNjUzM2M1ZWQ1ZjgyOTRiNzIzNDVhOWQwMWQzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lckhvc3QuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdFJ1bm5lckhvc3QuaApAQCAtMjYsMjUgKzI2LDE4IEBACiAjaWZuZGVmIEhUTUxTY3JpcHRS
dW5uZXJIb3N0X2gKICNkZWZpbmUgSFRNTFNjcmlwdFJ1bm5lckhvc3RfaAogCisjaW5jbHVkZSAi
U2NyaXB0UnVubmVySG9zdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF0b21p
Y1N0cmluZzsKIGNsYXNzIENhY2hlZFJlc291cmNlOwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhU
TUxJbnB1dFN0cmVhbTsKLWNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKLWNsYXNzIEhUTUxTY3Jp
cHRSdW5uZXJIb3N0IHsKK2NsYXNzIEhUTUxTY3JpcHRSdW5uZXJIb3N0IDogcHVibGljIFNjcmlw
dFJ1bm5lckhvc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxTY3JpcHRSdW5uZXJIb3N0
KCkgeyB9CiAKLSAgICAvLyBJbXBsZW1lbnRvcnMgc2hvdWxkIGNhbGwgY2FjaGVkUmVzb3VyY2Ut
PmFkZENsaWVudCgpIGhlcmUgb3Igc29vbiBhZnRlci4KLSAgICB2aXJ0dWFsIHZvaWQgd2F0Y2hG
b3JMb2FkKENhY2hlZFJlc291cmNlKikgPSAwOwotICAgIC8vIEltcGxlbWVudG9ycyBtdXN0IGNh
bGwgY2FjaGVkUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgpIGltbWVkaWF0ZWx5LgotICAgIHZpcnR1
YWwgdm9pZCBzdG9wV2F0Y2hpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKikgPSAwOwotCi0gICAg
Ly8gSW1wbGVtZW50b3JzIGNhbiBibG9jayBjZXJ0YWluIHNjcmlwdCBsb2FkcyAoZm9yIFhTU0F1
ZGl0b3IsIGV0Yy4pCi0gICAgdmlydHVhbCBib29sIHNob3VsZExvYWRFeHRlcm5hbFNjcmlwdEZy
b21TcmMoY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgSFRNTElucHV0U3Ry
ZWFtJiBpbnB1dFN0cmVhbSgpID0gMDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63934</attachid>
            <date>2010-08-09 15:27:19 -0700</date>
            <delta_ts>2010-08-11 11:33:26 -0700</delta_ts>
            <desc>Composite instead of inherit ScriptRunner</desc>
            <filename>bug-43736-20100809152717.patch</filename>
            <type>text/plain</type>
            <size>34997</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA0YjU1YTQ2NDI2NWI3NzFhMmFlNzgwMDY2OGY3NWJkYWMwMjdmMzAyLi5jYzFkNjhjOWQ0ZTdh
N2YzYjU2MDVjOThjM2MzNWYzYWEzZTEyZGUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xNzAsNiArMTcwLDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL1NjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5jcHAgXAogCWRvbS9TY3JpcHRFbGVtZW50LmNwcCBcCiAJZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwIFwKKwlkb20vU2NyaXB0UnVubmVyLmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1l
bnQuY3BwIFwKIAlkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAgXAogCWRvbS9TcGFjZVNwbGl0U3Ry
aW5nLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA2NGQxMmVkOWMxYmI1ODlhMjg4NjljZDRkMGI2NTg4ODM4ZmYx
NmRhLi42YmVmYmJhNTUwOTcyMzczZTlkZjg4MGMxM2M5MmJmN2RlNzQ0OWNmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTg1MCw2ICs4NTAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NjcmlwdGFibGVE
b2N1bWVudFBhcnNlci5jcHAKICAgICBkb20vU2NyaXB0RWxlbWVudC5jcHAKICAgICBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKyAgICBkb20vU2NyaXB0UnVubmVyLmNwcAogICAgIGRv
bS9TZWxlY3RFbGVtZW50LmNwcAogICAgIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcAogICAgIGRv
bS9TcGFjZVNwbGl0U3RyaW5nLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzNiOTdiYTI1NjBhNjA1ZTViNjFjMjAyZGRmNTMyZjkx
NTY5YjAzLi4xMGVhYzYzZDAxMTI3Yjk0OGE1YzY3N2M5NTMwNDA1OWIzYTQ2ZjAyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDEwLTA4LTA5ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9y
IG91dCBhIGJhc2UgU2NyaXB0UnVubmVyIGFuZCBTY3JpcHRSdW5uZXJIb3N0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzczNgorCisgICAgICAgIFRo
aXMgaXMgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgd2lsbCBiZSBzaGFyZWQgYnkgQXN5
bmNTY3JpcHRSdW5uZXIgYW5kIERlZmVycmVkU2NyaXB0UnVubmVyLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBiZWNhdXNlIG5vIGRpZmZlcmVuY2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAg
ICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vUGVuZGlu
Z1NjcmlwdC5oOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ1NjcmlwdDo6c2V0U3RhcnRpbmdM
aW5lTnVtYmVyKTogTm93IHRoYXQgSSdtIHVzaW5nIFBlbmRpbmdTY3JpcHQgZm9yIGlubGluZSBz
Y3JpcHRzIGFnYWluLCB0aGlzIGhhcyBhIHB1cnBvc2UuCisgICAgICAgICogZG9tL1NjcmlwdFJ1
bm5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRVUkxGb3JTY3JpcHRF
eGVjdXRpb24pOiBFeGFjdCBjb3B5IGZyb20gSFRNTFNjcmlwdFJ1bm5lci4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVNjcmlwdExvYWRFdmVudCk6IEV4YWN0IGNvcHkgZnJvbSBIVE1MU2NyaXB0
UnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0RXJyb3JFdmVudCk6IEV4YWN0
IGNvcHkgZnJvbSBIVE1MU2NyaXB0UnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVu
bmVyOjpTY3JpcHRSdW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpzb3Vy
Y2VGcm9tUGVuZGluZ1NjcmlwdCk6IEV4YWN0IGNvcHkgZnJvbSBIVE1MU2NyaXB0UnVubmVyLgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KTogU2xpZ2h0IHJl
ZmFjdG9yLCBidXQgbm8gcmVhbCBkaWZmZXJlbmNlcyBmcm9tIEhUTUxTY3JpcHRSdW5uZXIuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2
ZW50KTogVGhpcyBtZXRob2QgZGlkbid0IGV4aXN0IGluIEhUTUxTY3JpcHRSdW5uZXIsIGJ1dCBp
dCBpcyB0aGUgaW50ZXJmYWNlIHRoYXQgbWF5IGJlIHNoYXJlZCB3aXRoIERlZmVycmVkU2NyaXB0
UnVubmVyIGFuZCBBc3luY1NjcmlwdFJ1bm5lci4gVGhpcyBjaGFuZ2VzIHRoZSBvcmRlciBvZiBy
ZWxlYXNpbmcgdGhlIFBlbmRpbmdTY3JpcHQncyBlbGVtZW50IGFuZCBjcmVhdGluZyB0aGUgTmVz
dGluZ0xldmVsLCBidXQgSSBiZWxpZXZlIHRoaXMgb3JkZXIgdG8gc3RpbGwgYmUgc2FmZS4gQWxz
bywgQVNTRVJUcyB3ZXJlIG1vdmVkIHRvIHRoZSBjYWxsaW5nIHBvaW50LgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0KTogRXhhY3QgY29weSBmcm9tIEhUTUxT
Y3JpcHRSdW5uZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6OndhdGNoRm9yTG9h
ZCk6IEV4YWN0IGNvcHkgZnJvbSBIVE1MU2NyaXB0UnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKTogRXhhY3QgY29weSBmcm9tIEhUTUxT
Y3JpcHRSdW5uZXIuCisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6flNjcmlwdFJ1bm5lcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRSdW5uZXI6OmRvY3VtZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0UnVubmVy
SG9zdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lckhvc3Q6On5TY3Jp
cHRSdW5uZXJIb3N0KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6SFRNTFNjcmlwdFJ1bm5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3JpcHRSZWFkeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCk6
IENhbGxzIG5ldyBTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KCks
IHdoaWxlIHByZXNlcnZpbmcgcHJldmlvdXMgQVNTRVJUcy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RQYXJzaW5nQmxvY2tpbmdT
Y3JpcHQpOiBDYWxscyBuZXcgU2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KCkuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQpOiBVc2VzIFBlbmRpbmdTY3Jp
cHQgZm9yIGlubGluZSBzY3JpcHQgYW5kIHByZXNlcnZlcyBhIHByZXZpb3VzIEFTU0VSVCBtb3Zl
ZCBvdXQgb2YgZXhlY3V0ZVNjcmlwdCgpLgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdFJ1bm5l
ci5oOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdFJ1bm5lckhvc3QuaDoKKwogMjAxMC0wOC0w
OSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYWJhMGZmMTFhODQ4OWE0ZDAxYzEyMjg4NDU4MGU3YTll
OWQxMzk1YS4uZjZjNGQ3OWM0Y2NkMTU1ZTVlMzIwYmUyZWE2MTBlYzcyMjg3MGMyNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CkBAIC0xMTQ0LDYgKzExNDQsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAgXAogCVdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBcCisJV2ViQ29yZS9k
b20vU2NyaXB0UnVubmVyLmNwcCBcCisJV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmggXAorCVdl
YkNvcmUvZG9tL1NjcmlwdFJ1bm5lckhvc3QuaCBcCiAJV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVu
dC5jcHAgXAogCVdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9kb20vU2Vs
ZWN0b3JOb2RlTGlzdC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiOTgxNGI3M2Q3NDYxYmViZWRhNTM0MDFhMzg4MDBi
OGUyMjYzMTg4Li4xNTM3NjIyZGE0Nzc1MTE1NDRhZmI4MTg0M2ZjYWEyN2NiNzQ3OTkzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMTI1MSw2ICsxMjUxLDkgQEAKICAgICAgICAgICAgICdkb20vU2NyaXB0RWxlbWVudC5oJywK
ICAgICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgnLAorICAgICAgICAgICAgJ2RvbS9TY3Jp
cHRSdW5uZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vU2NyaXB0UnVubmVyLmgnLAorICAgICAg
ICAgICAgJ2RvbS9TY3JpcHRSdW5uZXJIb3N0LmgnLAogICAgICAgICAgICAgJ2RvbS9TZWxlY3RF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NlbGVjdEVsZW1lbnQuaCcsCiAgICAgICAg
ICAgICAnZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDM1NDQ1NzlmNTc2Y2JjYTEyN2Y3
ZjFiMjcyNjUzZDgyNmU1ODI0ZTQuLmVkYTBlNDYyZjI1MjcwYTM1YTgzMThjMTc4MjlhNjZlOTZh
Mzg2NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwpAQCAtNTM5LDYgKzUzOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9TY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuY3BwIFwKICAgICBkb20vU2NyaXB0RWxlbWVudC5jcHAgXAogICAg
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBcCisgICAgZG9tL1NjcmlwdFJ1bm5lci5j
cHAgXAogICAgIGRvbS9TZWxlY3RFbGVtZW50LmNwcCBcCiAgICAgZG9tL1NlbGVjdG9yTm9kZUxp
c3QuY3BwIFwKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggY2E5MGRmNDI2ZTFhZTEyZWI4MDEwYjcyMmUyYTg5Zjhl
NzJhOTA4ZS4uYTA5NzA0YzAwZWY3Y2U1YzFhY2RlNzdhOThjNTAyNzc0MmZlZWVmNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMzIwOSw2ICszMzIwOSwxOCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
U2NyaXB0UnVubmVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTY3JpcHRSdW5uZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTY3JpcHRSdW5uZXJIb3N0Lmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cU2VsZWN0RWxlbWVudC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYzY3YjZkODcxYThhOGI1MDhhM2M4
NzA5NjdhMDgzNGM1ZTZkMGFhLi5kNDA1Y2FiNDYxNTg1NTE3YjFkM2EzYTE2YmNjN2VhNWZhYWVh
MTQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM3
MCw2ICsyMzcwLDcgQEAKIAkJODlDRDAyOTMxMUM4NUI4NzAwNzBCNzkxIC8qIEpTQmxvYkJ1aWxk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlD
RDAyOTExMUM4NUI4NzAwNzBCNzkxIC8qIEpTQmxvYkJ1aWxkZXIuY3BwICovOyB9OwogCQk4OUNE
MDI5NDExQzg1Qjg3MDA3MEI3OTEgLyogSlNCbG9iQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlDRDAyOTIxMUM4NUI4NzAwNzBCNzkxIC8q
IEpTQmxvYkJ1aWxkZXIuaCAqLzsgfTsKIAkJOEExMkUzNUQxMUZBMzMyODAwMjU4MzZBIC8qIERv
Y3VtZW50TG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEExMkUzNUMxMUZBMzMyODAwMjU4MzZBIC8qIERvY3VtZW50TG9hZFRpbWluZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCThBMjMw
NTg0MTIwQ0U2REMwMDkwMjg0RiAvKiBTY3JpcHRSdW5uZXJIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTIzMDU4MzEyMENFNkRDMDA5MDI4NEYg
LyogU2NyaXB0UnVubmVySG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCThBNDEzQUUwMTIwN0JCQTUwMDgyMDE2RSAvKiBBc3luY1NjcmlwdFJ1
bm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE0
MTNBREUxMjA3QkJBNTAwODIwMTZFIC8qIEFzeW5jU2NyaXB0UnVubmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEE0MTNBRTExMjA3QkJBNTAw
ODIwMTZFIC8qIEFzeW5jU2NyaXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBNDEzQURGMTIwN0JCQTUwMDgyMDE2RSAvKiBBc3luY1Nj
cmlwdFJ1bm5lci5jcHAgKi87IH07CiAJCThBN0NDOTZCMTIwNzZENzMwMDFENDU4OCAvKiBQZW5k
aW5nU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4QTdDQzk2QTEyMDc2RDczMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzgzLDYgKzIzODQsOCBA
QAogCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE5QTU4NzMxMUU4NEM4MTAw
OEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuaCAqLzsgfTsKIAkJOEE5QTU4ODcxMUU4NEYzNzAwOEFD
RkQxIC8qIEpTVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhBOUE1ODc2MTFFODRDOTgwMDhBQ0ZEMSAvKiBKU1RpbWluZy5jcHAgKi87IH07
CiAJCThBOUE1ODg4MTFFODRGMzcwMDhBQ0ZEMSAvKiBKU1RpbWluZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE5QTU4NzcxMUU4NEM5ODAwOEFDRkQx
IC8qIEpTVGltaW5nLmggKi87IH07CisJCThBQkU0QzYyMTIwRTE3M0MwMEQ2RkJENSAvKiBTY3Jp
cHRSdW5uZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhBQkU0QzYxMTIwRTE3M0MwMEQ2RkJENSAvKiBTY3JpcHRSdW5uZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4QUJFNEM2NDEyMEUxNzUxMDBE
NkZCRDUgLyogU2NyaXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhBQkU0QzYzMTIwRTE3NTEwMEQ2RkJENSAvKiBTY3JpcHRSdW5uZXIu
Y3BwICovOyB9OwogCQk4QUY0RTU1NTExREM1QTM2MDAwRUQzREUgLyogTmF2aWdhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MjEx
REM1QTM2MDAwRUQzREUgLyogTmF2aWdhdGlvbi5jcHAgKi87IH07CiAJCThBRjRFNTU2MTFEQzVB
MzYwMDBFRDNERSAvKiBOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MzExREM1QTM2MDAwRUQzREUgLyogTmF2aWdhdGlvbi5o
ICovOyB9OwogCQk4QUY0RTU1QjExREM1QTYzMDAwRUQzREUgLyogVGltaW5nLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU4MTFEQzVBNjMw
MDBFRDNERSAvKiBUaW1pbmcuY3BwICovOyB9OwpAQCAtODE5MCw2ICs4MTkzLDcgQEAKIAkJODlD
RDAyOTExMUM4NUI4NzAwNzBCNzkxIC8qIEpTQmxvYkJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCbG9iQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg5Q0QwMjkyMTFDODVCODcwMDcwQjc5MSAvKiBKU0Jsb2JCdWlsZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmxvYkJ1aWxkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEExMkUzNUMxMUZBMzMyODAwMjU4MzZBIC8qIERv
Y3VtZW50TG9hZFRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1
bWVudExvYWRUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEEyMzA1ODMx
MjBDRTZEQzAwOTAyODRGIC8qIFNjcmlwdFJ1bm5lckhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0UnVubmVySG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4QTQxM0FERTEyMDdCQkE1MDA4MjAxNkUgLyogQXN5bmNTY3JpcHRSdW5uZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNTY3JpcHRSdW5uZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEE0MTNBREYxMjA3QkJBNTAwODIwMTZFIC8qIEFz
eW5jU2NyaXB0UnVubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFzeW5jU2NyaXB0UnVubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEE3
Q0M5NkExMjA3NkQ3MzAwMUQ0NTg4IC8qIFBlbmRpbmdTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGVuZGluZ1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODIwNCw2ICs4MjA4LDggQEAKIAkJOEE5QTU4NzMxMUU4NEM4MTAwOEFDRkQxIC8q
IEpTUGVyZm9ybWFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQZXJm
b3JtYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTlBNTg3NjExRTg0Qzk4
MDA4QUNGRDEgLyogSlNUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUaW1pbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTlBNTg3
NzExRTg0Qzk4MDA4QUNGRDEgLyogSlNUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEFCRTRD
NjExMjBFMTczQzAwRDZGQkQ1IC8qIFNjcmlwdFJ1bm5lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHRSdW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOEFCRTRDNjMxMjBFMTc1MTAwRDZGQkQ1IC8qIFNjcmlwdFJ1bm5lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRSdW5uZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4QUY0RTU1MjExREM1QTM2MDAwRUQzREUgLyogTmF2aWdhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NTMxMURDNUEzNjAwMEVEM0RF
IC8qIE5hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUY0RTU1NDExREM1QTM2MDAw
RUQzREUgLyogTmF2aWdhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdGlv
bi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM1MCw2ICsxNzM1Niw5IEBA
CiAJCQkJMDhBNDg0NzYwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLywKIAkJ
CQlFMTFDOURBRjBFQjM2OTk1MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAg
Ki8sCiAJCQkJRTExQzlEOUEwRUIzNjgxMjAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCAqLywKKwkJCQk4QUJFNEM2MzEyMEUxNzUxMDBENkZCRDUgLyogU2NyaXB0UnVubmVyLmNw
cCAqLywKKwkJCQk4QUJFNEM2MTEyMEUxNzNDMDBENkZCRDUgLyogU2NyaXB0UnVubmVyLmggKi8s
CisJCQkJOEEyMzA1ODMxMjBDRTZEQzAwOTAyODRGIC8qIFNjcmlwdFJ1bm5lckhvc3QuaCAqLywK
IAkJCQkwODRBRUJFMjBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5jcHAgKi8sCiAJ
CQkJMDg0QUVCRTMwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuaCAqLywKIAkJCQlC
QzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5jcHAgKi8sCkBAIC0y
MDEzOSw2ICsyMDE0OCw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0
IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYy
QTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOEEyMzA1ODQxMjBDRTZEQzAw
OTAyODRGIC8qIFNjcmlwdFJ1bm5lckhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCThBQkU0QzYy
MTIwRTE3M0MwMEQ2RkJENSAvKiBTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1
NjIsNiArMjI1NzMsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAy
RUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2
MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCThB
QkU0QzY0MTIwRTE3NTEwMEQ2RkJENSAvKiBTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmggYi9XZWJDb3JlL2RvbS9Q
ZW5kaW5nU2NyaXB0LmgKaW5kZXggODA1ZjdmZjllY2RmYTM0OWQwYjcwZmUyYjRhNTJiMmFhNDUw
ZWE3My4uNTE2MGQ0YjhlOGM1ZTc0Zjk0MDAxY2MwNDQwYjg2MmFmMGJkMWEyOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5oCisrKyBiL1dlYkNvcmUvZG9tL1BlbmRpbmdT
Y3JpcHQuaApAQCAtNTEsOSArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB+UGVuZGluZ1NjcmlwdCgp
OwogCi0gICAgLy8gRklYTUU6IE5vIHNldHRlciBtZWFucyB0aGlzIGlzIG5ldmVyIHNldCB0byBh
bnl0aGluZyBvdGhlciB0aGFuIDAuCi0gICAgLy8gVGhpcyBpcyBlaXRoZXIgdW5uZWNlc3Nhcnkg
b3IgaW5jb3JyZWN0LgogICAgIGludCBzdGFydGluZ0xpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0aW5nTGluZU51bWJlcjsgfQorICAgIHZvaWQgc2V0U3RhcnRpbmdMaW5lTnVtYmVy
KGludCBpKSB7IG1fc3RhcnRpbmdMaW5lTnVtYmVyID0gaTsgfQogCiAgICAgYm9vbCB3YXRjaGlu
Z0ZvckxvYWQoKSBjb25zdCB7IHJldHVybiBtX3dhdGNoaW5nRm9yTG9hZDsgfQogICAgIHZvaWQg
c2V0V2F0Y2hpbmdGb3JMb2FkKGJvb2wgYikgeyBtX3dhdGNoaW5nRm9yTG9hZCA9IGI7IH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9XZWJDb3JlL2RvbS9TY3Jp
cHRSdW5uZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYmE2ZmE3NzZhNzA3OTBhOWRiNjBiZDUzM2NmNjZl
MjE1MDU1OTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3Bw
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5o
IgorCisjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCisj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBlbmRpbmdTY3JpcHQu
aCIKKyNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0UnVubmVySG9z
dC5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgS1VSTCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihEb2N1bWVudCog
ZG9jdW1lbnQpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCisg
ICAgICAgIHJldHVybiBLVVJMKCk7CisKKyAgICAvLyBVc2UgdGhlIFVSTCBvZiB0aGUgY3VycmVu
dGx5IGFjdGl2ZSBkb2N1bWVudCBmb3IgdGhpcyBmcmFtZS4KKyAgICByZXR1cm4gZG9jdW1lbnQt
PmZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpOworfQorCitpbmxpbmUgUGFzc1JlZlB0cjxFdmVu
dD4gY3JlYXRlU2NyaXB0TG9hZEV2ZW50KCkKK3sKKyAgICByZXR1cm4gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworfQorCitpbmxpbmUgUGFzc1Jl
ZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0RXJyb3JFdmVudCgpCit7CisgICAgcmV0dXJuIEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKTsKK30KKworU2Ny
aXB0UnVubmVyOjpTY3JpcHRSdW5uZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBTY3JpcHRSdW5uZXJI
b3N0KiBob3N0KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1faG9zdChob3N0
KQoreworICAgIEFTU0VSVChtX2hvc3QpOworfQorCitTY3JpcHRTb3VyY2VDb2RlIFNjcmlwdFJ1
bm5lcjo6c291cmNlRnJvbVBlbmRpbmdTY3JpcHQoY29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0
LCBib29sJiBlcnJvck9jY3VycmVkKSBjb25zdAoreworICAgIGlmIChzY3JpcHQuY2FjaGVkU2Ny
aXB0KCkpIHsKKyAgICAgICAgZXJyb3JPY2N1cnJlZCA9IHNjcmlwdC5jYWNoZWRTY3JpcHQoKS0+
ZXJyb3JPY2N1cnJlZCgpOworICAgICAgICBBU1NFUlQoc2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5p
c0xvYWRlZCgpKTsKKyAgICAgICAgcmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LmNhY2hl
ZFNjcmlwdCgpKTsKKyAgICB9CisgICAgZXJyb3JPY2N1cnJlZCA9IGZhbHNlOworICAgIHJldHVy
biBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5lbGVtZW50KCktPnRleHRDb250ZW50KCksIGRvY3Vt
ZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKG1fZG9jdW1lbnQpLCBzY3JpcHQuc3RhcnRpbmdMaW5l
TnVtYmVyKCkpOworfQorCitib29sIFNjcmlwdFJ1bm5lcjo6cmVxdWVzdFNjcmlwdChQZW5kaW5n
U2NyaXB0JiBwZW5kaW5nU2NyaXB0LCBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVVSTCwgRWxl
bWVudCogc2NyaXB0RWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIXBlbmRpbmdTY3JpcHQu
ZWxlbWVudCgpKTsKKyAgICBpZiAoIW1faG9zdC0+c2hvdWxkTG9hZEV4dGVybmFsU2NyaXB0RnJv
bVNyYyhzb3VyY2VVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IFdl
IG5lZWQgdG8gcmVzb2x2ZSB0aGUgdXJsIHJlbGF0aXZlIHRvIHRoZSBlbGVtZW50LgorICAgIGlm
ICghc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc291cmNlVVJMKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBlbmRpbmdTY3JpcHQuYWRvcHRFbGVtZW50KHNjcmlw
dEVsZW1lbnQpOworICAgIC8vIFRoaXMgc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gMCBmb3IgZW1w
dHkgb3IgaW52YWxpZCBzb3VyY2VVUkxzLgorICAgIENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0
ID0gbV9kb2N1bWVudC0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc291cmNlVVJMLCB0b1Nj
cmlwdEVsZW1lbnQoc2NyaXB0RWxlbWVudCktPnNjcmlwdENoYXJzZXQoKSk7CisgICAgaWYgKCFj
YWNoZWRTY3JpcHQpIHsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gRGlzcGF0Y2ggZXJy
b3IgZXZlbnQuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwZW5kaW5nU2Ny
aXB0LnNldENhY2hlZFNjcmlwdChjYWNoZWRTY3JpcHQpOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQoUGVuZGlu
Z1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkgY29uc3QKK3sKKyAgICBib29sIGVycm9yT2NjdXJyZWQg
PSBmYWxzZTsKKyAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVu
ZGluZ1NjcmlwdChwZW5kaW5nU2NyaXB0LCBlcnJvck9jY3VycmVkKTsKKyAgICAvLyBDbGVhciB0
aGUgcGVuZGluZyBzY3JpcHQgYmVmb3JlIHBvc3NpYmxlIHJlbnRyYW5jeSBmcm9tIGV4ZWN1dGVT
Y3JpcHQoKQorICAgIFJlZlB0cjxFbGVtZW50PiBzY3JpcHRFbGVtZW50ID0gcGVuZGluZ1Njcmlw
dC5yZWxlYXNlRWxlbWVudEFuZENsZWFyKCk7CisgICAgaWYgKGVycm9yT2NjdXJyZWQpCisgICAg
ICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoY3JlYXRlU2NyaXB0RXJyb3JFdmVudCgp
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZXhlY3V0ZVNjcmlwdChzY3JpcHRFbGVtZW50LmdldCgp
LCBzb3VyY2VDb2RlKTsKKyAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVh
dGVTY3JpcHRMb2FkRXZlbnQoKSk7CisgICAgfQorfQorCit2b2lkIFNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVNjcmlwdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKSBjb25zdAoreworICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0b1Nj
cmlwdEVsZW1lbnQoZWxlbWVudCk7CisgICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOworICAgIGlm
ICghc2NyaXB0RWxlbWVudC0+c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCFtX2RvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9kb2N1bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc291cmNlQ29k
ZSk7Cit9CisKK3ZvaWQgU2NyaXB0UnVubmVyOjp3YXRjaEZvckxvYWQoUGVuZGluZ1NjcmlwdCYg
cGVuZGluZ1NjcmlwdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIXBlbmRpbmdTY3JpcHQud2F0Y2hp
bmdGb3JMb2FkKCkpOworICAgIG1faG9zdC0+d2F0Y2hGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2Fj
aGVkU2NyaXB0KCkpOworICAgIHBlbmRpbmdTY3JpcHQuc2V0V2F0Y2hpbmdGb3JMb2FkKHRydWUp
OworfQorCit2b2lkIFNjcmlwdFJ1bm5lcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChQZW5kaW5nU2Ny
aXB0JiBwZW5kaW5nU2NyaXB0KSBjb25zdAoreworICAgIEFTU0VSVChwZW5kaW5nU2NyaXB0Lndh
dGNoaW5nRm9yTG9hZCgpKTsKKyAgICBtX2hvc3QtPnN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGlu
Z1NjcmlwdC5jYWNoZWRTY3JpcHQoKSk7CisgICAgcGVuZGluZ1NjcmlwdC5zZXRXYXRjaGluZ0Zv
ckxvYWQoZmFsc2UpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5u
ZXIuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkZTBlNWFjNTg0
ZjliODY0YTcyNjJiMTRhOGQ3Zjg5MzhiMzk2OTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2RvbS9TY3JpcHRSdW5uZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTY3JpcHRSdW5uZXJfaAorI2Rl
ZmluZSBTY3JpcHRSdW5uZXJfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBB
dG9taWNTdHJpbmc7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBQZW5k
aW5nU2NyaXB0OworY2xhc3MgU2NyaXB0UnVubmVySG9zdDsKK2NsYXNzIFNjcmlwdFNvdXJjZUNv
ZGU7CisKK2NsYXNzIFNjcmlwdFJ1bm5lciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2NyaXB0UnVubmVyPiBjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50LCBTY3JpcHRSdW5uZXJIb3N0KiBob3N0KSB7IHJldHVybiBuZXcgU2NyaXB0UnVubmVy
KGRvY3VtZW50LCBob3N0KTsgfQorICAgIHZpcnR1YWwgflNjcmlwdFJ1bm5lcigpIHsgfQorCisg
ICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5n
U2NyaXB0JiwgYm9vbCYgZXJyb3JPY2N1cnJlZCkgY29uc3Q7CisgICAgYm9vbCByZXF1ZXN0U2Ny
aXB0KFBlbmRpbmdTY3JpcHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVVSTCwgRWxlbWVu
dCopIGNvbnN0OworICAgIHZvaWQgd2F0Y2hGb3JMb2FkKFBlbmRpbmdTY3JpcHQmKSBjb25zdDsK
KyAgICB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoUGVuZGluZ1NjcmlwdCYpIGNvbnN0OworICAg
IHZvaWQgZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQoUGVuZGluZ1NjcmlwdCYpIGNvbnN0
OworICAgIHZvaWQgZXhlY3V0ZVNjcmlwdChFbGVtZW50KiwgY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYpIGNvbnN0OworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVu
dDsgfQorCitwcml2YXRlOgorICAgIFNjcmlwdFJ1bm5lcihEb2N1bWVudCosIFNjcmlwdFJ1bm5l
ckhvc3QqKTsKKworICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFNjcmlwdFJ1bm5lckhv
c3QqIG1faG9zdDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9T
Y3JpcHRSdW5uZXJIb3N0LmggYi9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXJIb3N0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjM1YzM1YWI0Nzk1ZTgxMmY3MzhjMzE3MjA4NDA1OTZlYzkzMTBjYgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lckhvc3QuaApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBTY3JpcHRSdW5uZXJIb3N0X2gKKyNkZWZpbmUgU2NyaXB0UnVubmVySG9zdF9oCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5nOworY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2U7CisKK2NsYXNzIFNjcmlwdFJ1bm5lckhvc3QgeworcHVibGljOgorICAgIHZpcnR1YWwgflNj
cmlwdFJ1bm5lckhvc3QoKSB7IH0KKworICAgIC8vIEltcGxlbWVudG9ycyBzaG91bGQgY2FsbCBj
YWNoZWRSZXNvdXJjZS0+YWRkQ2xpZW50KCkgaGVyZSBvciBzb29uIGFmdGVyLgorICAgIHZpcnR1
YWwgdm9pZCB3YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKSA9IDA7CisgICAgLy8gSW1wbGVt
ZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCkgaW1tZWRpYXRl
bHkuCisgICAgdmlydHVhbCB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2Uq
KSA9IDA7CisKKyAgICAvLyBJbXBsZW1lbnRvcnMgY2FuIGJsb2NrIGNlcnRhaW4gc2NyaXB0IGxv
YWRzIChmb3IgWFNTQXVkaXRvciwgZXRjLikKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZEV4
dGVybmFsU2NyaXB0RnJvbVNyYyhjb25zdCBBdG9taWNTdHJpbmcmKSA9IDA7Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDRhOTA1OGZhZjQ1Y2Q4NTIx
YmQzYWEzOWFlMTBmMWQ1YjBmN2Q1ZmUuLmJiZGM3ZjAzNmM2NmI0MTU0ZTMwOWE5NzIxMTAyNTMx
ZDFjYWFjNWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAKQEAgLTI4LDE1ICsyOCwxMyBA
QAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCi0j
aW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkV2
ZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MU2NyaXB0UnVubmVySG9z
dC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dFN0cmVhbS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5o
IgorI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsNyArNjEsOCBAQCBwcml2YXRlOgogfTsK
IAogSFRNTFNjcmlwdFJ1bm5lcjo6SFRNTFNjcmlwdFJ1bm5lcihEb2N1bWVudCogZG9jdW1lbnQs
IEhUTUxTY3JpcHRSdW5uZXJIb3N0KiBob3N0KQotICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
KyAgICA6IG1fcnVubmVyKFNjcmlwdFJ1bm5lcjo6Y3JlYXRlKGRvY3VtZW50LCBob3N0KSkKKyAg
ICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2hvc3QoaG9zdCkKICAgICAsIG1fc2Ny
aXB0TmVzdGluZ0xldmVsKDApCiAgICAgLCBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVl
dHMoZmFsc2UpCkBAIC03NSwzNyArNzQsNyBAQCBIVE1MU2NyaXB0UnVubmVyOjp+SFRNTFNjcmlw
dFJ1bm5lcigpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBiZSBwYXNzZWQgYSAiZG9uZSBs
b2FkaW5nL3BhcnNpbmciIGNhbGxiYWNrIHNvb25lciB0aGFuIGRlc3RydWN0aW9uPwogICAgIGlm
IChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSAmJiBtX3BhcnNpbmdCbG9j
a2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKLSAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9h
ZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7Ci19Ci0KLXN0YXRpYyBLVVJMIGRvY3VtZW50VVJM
Rm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKLQotICAg
IC8vIFVzZSB0aGUgVVJMIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGRvY3VtZW50IGZvciB0aGlz
IGZyYW1lLgotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCk7
Ci19Ci0KLWlubGluZSBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKQot
ewotICAgIHJldHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNl
LCBmYWxzZSk7Ci19Ci0KLWlubGluZSBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVTY3JpcHRFcnJv
ckV2ZW50KCkKLXsKLSAgICByZXR1cm4gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgdHJ1ZSwgZmFsc2UpOwotfQotCi1TY3JpcHRTb3VyY2VDb2RlIEhUTUxTY3JpcHRSdW5u
ZXI6OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCwg
Ym9vbCYgZXJyb3JPY2N1cnJlZCkKLXsKLSAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCgpKSB7
Ci0gICAgICAgIGVycm9yT2NjdXJyZWQgPSBzY3JpcHQuY2FjaGVkU2NyaXB0KCktPmVycm9yT2Nj
dXJyZWQoKTsKLSAgICAgICAgQVNTRVJUKHNjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQo
KSk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5jYWNoZWRTY3JpcHQo
KSk7Ci0gICAgfQotICAgIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKLSAgICByZXR1cm4gU2NyaXB0
U291cmNlQ29kZShzY3JpcHQuZWxlbWVudCgpLT50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTEZv
clNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50KSwgc2NyaXB0LnN0YXJ0aW5nTGluZU51bWJlcigp
KTsKKyAgICAgICAgbV9ydW5uZXItPnN0b3BXYXRjaGluZ0ZvckxvYWQobV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQpOwogfQogCiBib29sIEhUTUxTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJl
YWR5KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCkKQEAgLTEyMiw1OCArOTEsMjIgQEAgdm9p
ZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJU
KCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHls
ZXNoZWV0c0xvYWRlZCgpKTsKLSAgICBib29sIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICBB
U1NFUlQoaXNQZW5kaW5nU2NyaXB0UmVhZHkobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpKTsKLSAg
ICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdCht
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdCwgZXJyb3JPY2N1cnJlZCk7CiAKICAgICAvLyBTdG9wIHdh
dGNoaW5nIGxvYWRzIGJlZm9yZSBleGVjdXRlU2NyaXB0IHRvIHByZXZlbnQgcmVjdXJzaW9uIGlm
IHRoZSBzY3JpcHQgcmVsb2FkcyBpdHNlbGYuCiAgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2Ny
aXB0LmNhY2hlZFNjcmlwdCgpICYmIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LndhdGNoaW5nRm9y
TG9hZCgpKQotICAgICAgICBzdG9wV2F0Y2hpbmdGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2Ny
aXB0KTsKKyAgICAgICAgbV9ydW5uZXItPnN0b3BXYXRjaGluZ0ZvckxvYWQobV9wYXJzaW5nQmxv
Y2tpbmdTY3JpcHQpOwogCi0gICAgLy8gQ2xlYXIgdGhlIHBlbmRpbmcgc2NyaXB0IGJlZm9yZSBw
b3NzaWJsZSByZW50cmFuY3kgZnJvbSBleGVjdXRlU2NyaXB0KCkKLSAgICBSZWZQdHI8RWxlbWVu
dD4gc2NyaXB0RWxlbWVudCA9IG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LnJlbGVhc2VFbGVtZW50
QW5kQ2xlYXIoKTsKICAgICB7CiAgICAgICAgIE5lc3RTY3JpcHQgbmVzdGluZ0xldmVsKG1fc2Ny
aXB0TmVzdGluZ0xldmVsLCBtX2hvc3QtPmlucHV0U3RyZWFtKCkpOwotICAgICAgICBpZiAoZXJy
b3JPY2N1cnJlZCkKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoY3Jl
YXRlU2NyaXB0RXJyb3JFdmVudCgpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBleGVj
dXRlU2NyaXB0KHNjcmlwdEVsZW1lbnQuZ2V0KCksIHNvdXJjZUNvZGUpOwotICAgICAgICAgICAg
c2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKSk7Ci0g
ICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkpOworICAgICAgICBBU1NFUlQoaXNFeGVjdXRpbmdTY3JpcHQoKSk7CisgICAgICAgIG1f
cnVubmVyLT5leGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChtX3BhcnNpbmdCbG9ja2luZ1Nj
cmlwdCk7CiAgICAgfQogICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOwogfQogCi12
b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHQoRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKLXsKLSAgICAvLyBGSVhNRTogV2UgZG8g
bm90IGJsb2NrIGlubGluZSA8c2NyaXB0PiB0YWdzIG9uIHN0eWxlc2hlZXRzIGZvciBub3cuCi0g
ICAgLy8gV2hlbiB3ZSBkbywgIHx8ICFlbGVtZW50LT5oYXNBdHRyaWJ1dGUoc3JjQXR0cikgc2hv
dWxkIGJlIHJlbW92ZWQgZnJvbQotICAgIC8vIHRoZSBBU1NFUlQgYmVsb3cuICBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDQ3Ci0gICAgQVNTRVJUKG1fZG9j
dW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIHx8ICFlbGVtZW50LT5oYXNBdHRyaWJ1dGUo
c3JjQXR0cikpOwotICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVs
ZW1lbnQoZWxlbWVudCk7Ci0gICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOwotICAgIGlmICghc2Ny
aXB0RWxlbWVudC0+c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgQVNTRVJUKGlzRXhlY3V0aW5nU2NyaXB0KCkpOwotICAgIGlmICghbV9kb2N1bWVudC0+
ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlw
dCgpLT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOwotfQotCi12b2lkIEhUTUxTY3JpcHRSdW5u
ZXI6OndhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQotewotICAgIEFT
U0VSVCghcGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSk7Ci0gICAgbV9ob3N0LT53YXRj
aEZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSk7Ci0gICAgcGVuZGluZ1Njcmlw
dC5zZXRXYXRjaGluZ0ZvckxvYWQodHJ1ZSk7Ci19Ci0KLXZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6
c3RvcFdhdGNoaW5nRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQotewotICAg
IEFTU0VSVChwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKTsKLSAgICBtX2hvc3QtPnN0
b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSk7Ci0gICAgcGVu
ZGluZ1NjcmlwdC5zZXRXYXRjaGluZ0ZvckxvYWQoZmFsc2UpOwotfQotCiAvLyBUaGlzIGZ1bmN0
aW9uIHNob3VsZCBtYXRjaCAxMC4yLjUuMTEgIkFuIGVuZCB0YWcgd2hvc2UgdGFnIG5hbWUgaXMg
J3NjcmlwdCciCiAvLyBTY3JpcHQgaGFuZGxpbmcgbGl2ZXMgb3V0c2lkZSB0aGUgdHJlZSBidWls
ZGVyIHRvIGtlZXAgdGhlIGVhY2ggY2xhc3Mgc2ltcGxlLgogYm9vbCBIVE1MU2NyaXB0UnVubmVy
OjpleGVjdXRlKFBhc3NSZWZQdHI8RWxlbWVudD4gc2NyaXB0RWxlbWVudCwgaW50IHN0YXJ0TGlu
ZSkKQEAgLTIyOCwzMSArMTYxLDE4IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNj
cmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogICAgIHJldHVybiBleGVjdXRlUGFyc2luZ0Js
b2NraW5nU2NyaXB0cygpOwogfQogCi12b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3Jp
cHQoRWxlbWVudCogc2NyaXB0KQordm9pZCBIVE1MU2NyaXB0UnVubmVyOjpyZXF1ZXN0UGFyc2lu
Z0Jsb2NraW5nU2NyaXB0KEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc291cmNlVVJMKQogewotICAgIEFTU0VSVCghbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxl
bWVudCgpKTsKLSAgICBBdG9taWNTdHJpbmcgc3JjVmFsdWUgPSBzY3JpcHQtPmdldEF0dHJpYnV0
ZShzcmNBdHRyKTsKLSAgICAvLyBBbGxvdyB0aGUgaG9zdCB0byBkaXNsbG93IHNjcmlwdCBsb2Fk
cyAodXNpbmcgdGhlIFhTU0F1ZGl0b3IsIGV0Yy4pCi0gICAgaWYgKCFtX2hvc3QtPnNob3VsZExv
YWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoc3JjVmFsdWUpKQorICAgIGlmICghbV9ydW5uZXItPnJl
cXVlc3RTY3JpcHQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQsIHNvdXJjZVVSTCwgc2NyaXB0RWxl
bWVudCkpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byByZXNvbHZl
IHRoZSB1cmwgcmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQuCi0gICAgaWYgKCFzY3JpcHQtPmRpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50KHNyY1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcGFy
c2luZ0Jsb2NraW5nU2NyaXB0LmFkb3B0RWxlbWVudChzY3JpcHQpOwotICAgIC8vIFRoaXMgc2hv
dWxkIGNvcnJlY3RseSByZXR1cm4gMCBmb3IgZW1wdHkgb3IgaW52YWxpZCBzcmNWYWx1ZXMuCi0g
ICAgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQgPSBtX2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+
cmVxdWVzdFNjcmlwdChzcmNWYWx1ZSwgdG9TY3JpcHRFbGVtZW50KHNjcmlwdCktPnNjcmlwdENo
YXJzZXQoKSk7Ci0gICAgaWYgKCFjYWNoZWRTY3JpcHQpIHsKLSAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsgLy8gRGlzcGF0Y2ggZXJyb3IgZXZlbnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9CiAK
LSAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5zZXRDYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0
KTsKKyAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkpOwog
CiAgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IGEgbG9hZCBjYWxsYmFjayBpZiBjYWNoZWRTY3Jp
cHQgaXMgbm90IGFscmVhZHkKICAgICAvLyBpbiB0aGUgY2FjaGUuICBDYWxsZXJzIHdpbGwgYXR0
ZW1wdCB0byBydW4gdGhlIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0CiAgICAgLy8gaWYgcG9zc2li
bGUgYmVmb3JlIHJldHVybmluZyBjb250cm9sIHRvIHRoZSBwYXJzZXIuCiAgICAgaWYgKCFtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSkKLSAgICAgICAg
d2F0Y2hGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKKyAgICAgICAgbV9ydW5uZXIt
PndhdGNoRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiB9CiAKIC8vIFRoaXMgbWV0
aG9kIGlzIG1lYW50IHRvIG1hdGNoIHRoZSBIVE1MNSBkZWZpbml0aW9uIG9mICJydW5uaW5nIGEg
c2NyaXB0IgpAQCAtMjY3LDEzICsxODcsMjIgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5T
Y3JpcHQoRWxlbWVudCogc2NyaXB0LCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKQogICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOyAvLyBldmVudCBmb3Igc3VwcG9ydAogCiAgICAgICAgIGlmIChzY3Jp
cHQtPmhhc0F0dHJpYnV0ZShzcmNBdHRyKSkgeworICAgICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBzb3VyY2VVUkwgPSBzY3JpcHQtPmdldEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgZGVmZXIgYW5kIGFzeW5jCi0gICAgICAgICAgICByZXF1ZXN0
U2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICByZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0
KHNjcmlwdCwgc291cmNlVVJMKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBkbyBub3QgYmxvY2sgaW5saW5lIDxzY3JpcHQ+IHRhZ3Mgb24gc3R5bGVzaGVldHMg
dG8gbWF0Y2ggdGhlCi0gICAgICAgICAgICAvLyBvbGQgcGFyc2VyIGZvciBub3cuICBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDQ3Ci0gICAgICAgICAgICBT
Y3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LT50ZXh0Q29udGVudCgpLCBkb2N1bWVu
dFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50KSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsK
LSAgICAgICAgICAgIGV4ZWN1dGVTY3JpcHQoc2NyaXB0LCBzb3VyY2VDb2RlKTsKKyAgICAgICAg
ICAgIC8vIG9sZCBwYXJzZXIgZm9yIG5vdy4gIFdoZW4gd2UgZG8sIHRoZSBBU1NFUlQgYmVsb3cg
c2hvdWxkIGJlIGFkZGVkLgorICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDA0NworICAgICAgICAgICAgLy8gQVNTRVJUKG1fZG9jdW1l
bnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc0V4ZWN1
dGluZ1NjcmlwdCgpKTsKKworICAgICAgICAgICAgUGVuZGluZ1NjcmlwdCBwZW5kaW5nU2NyaXB0
OworICAgICAgICAgICAgcGVuZGluZ1NjcmlwdC5hZG9wdEVsZW1lbnQoc2NyaXB0KTsKKyAgICAg
ICAgICAgIHBlbmRpbmdTY3JpcHQuc2V0U3RhcnRpbmdMaW5lTnVtYmVyKHN0YXJ0aW5nTGluZU51
bWJlcik7CisgICAgICAgICAgICBib29sIHVudXNlZEVycm9yT2NjdXJyZWQ7CisgICAgICAgICAg
ICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtX3J1bm5lci0+c291cmNlRnJvbVBlbmRp
bmdTY3JpcHQocGVuZGluZ1NjcmlwdCwgdW51c2VkRXJyb3JPY2N1cnJlZCk7CisgICAgICAgICAg
ICBtX3J1bm5lci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHNvdXJjZUNvZGUpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmgKaW5kZXggODU4MDFiMjk0NDEyZDg3YTQ5
MGUwNmM5ODVmZDY1ZmFiY2MxNTUzMC4uZmUyNDE5MmUzNDg5ODVjZmQxNjJlZTg0ODdlYjgwZGZh
Zjk5MGQzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5oCkBAIC0zMiwxMiArMzIsMTQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBdG9taWNTdHJpbmc7CiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTFNjcmlwdFJ1bm5lckhvc3Q7CitjbGFzcyBT
Y3JpcHRSdW5uZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCiBjbGFzcyBIVE1MU2NyaXB0
UnVubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTYxLDE3ICs2MywxMiBAQCBwcml2YXRl
OgogICAgIGJvb2wgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKICAgICB2b2lkIGV4
ZWN1dGVQZW5kaW5nU2NyaXB0KCk7CiAKLSAgICB2b2lkIHJlcXVlc3RTY3JpcHQoRWxlbWVudCop
OworICAgIHZvaWQgcmVxdWVzdFBhcnNpbmdCbG9ja2luZ1NjcmlwdChFbGVtZW50KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHZvaWQgcnVuU2NyaXB0KEVsZW1lbnQqLCBp
bnQgc3RhcnRpbmdMaW5lTnVtYmVyKTsKIAotICAgIC8vIEhlbHBlcnMgZm9yIGRlYWxpbmcgd2l0
aCBIVE1MU2NyaXB0UnVubmVySG9zdAotICAgIHZvaWQgd2F0Y2hGb3JMb2FkKFBlbmRpbmdTY3Jp
cHQmKTsKLSAgICB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoUGVuZGluZ1NjcmlwdCYpOwotICAg
IHZvaWQgZXhlY3V0ZVNjcmlwdChFbGVtZW50KiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwot
CiAgICAgYm9vbCBpc1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5kaW5nU2NyaXB0Jik7Ci0g
ICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5n
U2NyaXB0JiwgYm9vbCYgZXJyb3JPY2N1cnJlZCk7CiAKKyAgICBPd25QdHI8U2NyaXB0UnVubmVy
PiBtX3J1bm5lcjsKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBIVE1MU2NyaXB0UnVu
bmVySG9zdCogbV9ob3N0OwogICAgIFBlbmRpbmdTY3JpcHQgbV9wYXJzaW5nQmxvY2tpbmdTY3Jp
cHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVySG9zdC5oCmluZGV4IGExMjk1MjA3OWY4OTQ2NzFi
NDYxZTY3MTQxNjVkNzg2YWFlMjE3MTMuLjRhMTU3ZTEzMjkwMTE2NTMzYzVlZDVmODI5NGI3MjM0
NWE5ZDAxZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVySG9zdC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVySG9zdC5oCkBAIC0yNiwyNSArMjYs
MTggQEAKICNpZm5kZWYgSFRNTFNjcmlwdFJ1bm5lckhvc3RfaAogI2RlZmluZSBIVE1MU2NyaXB0
UnVubmVySG9zdF9oCiAKKyNpbmNsdWRlICJTY3JpcHRSdW5uZXJIb3N0LmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXRvbWljU3RyaW5nOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTElucHV0U3RyZWFtOwotY2xhc3MgU2NyaXB0U291
cmNlQ29kZTsKIAotY2xhc3MgSFRNTFNjcmlwdFJ1bm5lckhvc3QgeworY2xhc3MgSFRNTFNjcmlw
dFJ1bm5lckhvc3QgOiBwdWJsaWMgU2NyaXB0UnVubmVySG9zdCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SFRNTFNjcmlwdFJ1bm5lckhvc3QoKSB7IH0KIAotICAgIC8vIEltcGxlbWVudG9ycyBz
aG91bGQgY2FsbCBjYWNoZWRSZXNvdXJjZS0+YWRkQ2xpZW50KCkgaGVyZSBvciBzb29uIGFmdGVy
LgotICAgIHZpcnR1YWwgdm9pZCB3YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKSA9IDA7Ci0g
ICAgLy8gSW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50
KCkgaW1tZWRpYXRlbHkuCi0gICAgdmlydHVhbCB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoQ2Fj
aGVkUmVzb3VyY2UqKSA9IDA7Ci0KLSAgICAvLyBJbXBsZW1lbnRvcnMgY2FuIGJsb2NrIGNlcnRh
aW4gc2NyaXB0IGxvYWRzIChmb3IgWFNTQXVkaXRvciwgZXRjLikKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhjb25zdCBBdG9taWNTdHJpbmcmKSA9IDA7
CiAgICAgdmlydHVhbCBIVE1MSW5wdXRTdHJlYW0mIGlucHV0U3RyZWFtKCkgPSAwOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64138</attachid>
            <date>2010-08-11 11:33:30 -0700</date>
            <delta_ts>2010-08-13 16:37:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43736-20100811113329.patch</filename>
            <type>text/plain</type>
            <size>10175</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTBiMmI4NTViYzhkMDJlMDVhZDMzNTFiODliZDM1NTkxYTdiMDMwMy4uZWY5Y2RlNTQxYzU1NTFj
MWFiYzQxYjY5OTg1OWRhZjM4MjdmZWJhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0xMSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxTY3JpcHRSdW5uZXIgdG8g
YWxsb3cgZGVmZXJyZWQgc2NyaXB0cyB0byBzaGFyZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzczNgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlCisKKyAgICAgICAgKiBodG1sL0hUTUxTY3Jp
cHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6c291cmNl
RnJvbVBlbmRpbmdTY3JpcHQpOiBNYWtlIGNvbnN0IHRvIGVuZm9yY2UgdGhlIGlkZWEgdGhhdCBp
dCBkb2Vzbid0IGNoYW5nZSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHQpOiBSZW5h
bWUgdG8gbWFrZSBpdCBjbGVhciB0aGlzIGRlYWxzIHdpdGggdGhlIHBhcnNpbmcgYmxvY2tpbmcg
c2NyaXB0IGFuZCByZWZhY3RvciB0byB1c2UgZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRj
aEV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRp
bmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KTogRmFjdG9yZWQgb3V0IG9mIGV4ZWN1dGVQZW5kaW5n
U2NyaXB0LCB0aGlzIGNhbiBiZSB1c2VkIGZvciBleGVjdXRpbmcgYW55IGV4dGVybmFsIHNjcmlw
dC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHQpOiBU
aGlzIGNhbiBiZSB1c2VkIGZvciBleGVjdXRpbmcgYW55IGlubGluZSBvciBleHRlcm5hbCBzY3Jp
cHQuIEFTU0VSVHMgbW92ZWQgdG8gdGhlIHR3byBjYWxsaW5nIHBvaW50cy4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKTog
TW92ZWQgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6cmVxdWVz
dFBhcnNpbmdCbG9ja2luZ1NjcmlwdCk6IEZhY3RvcmVkIG91dCByZXF1ZXN0UGVuZGluZ1Njcmlw
dC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RQZW5kaW5nU2Ny
aXB0KTogRmFjdG9yZWQgb3V0IGZyb20gcmVxZXVzdFBhcnNpbmdCbG9ja2luZ1NjcmlwdC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdCk6CisgICAgICAgICog
aHRtbC9IVE1MU2NyaXB0UnVubmVyLmg6CisKIDIwMTAtMDgtMTEgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRt
YW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAKaW5kZXggNGE5MDU4ZmFmNDVjZDg1MjFiZDNh
YTM5YWUxMGYxZDViMGY3ZDVmZS4uYzc4ODk5MWM0MDQ0OWE4NDIyM2ViNzI3MzE4ODZhNDE3Yjdj
NjU4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBpbmxp
bmUgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0RXJyb3JFdmVudCgpCiAgICAgcmV0dXJu
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKTsKIH0K
IAotU2NyaXB0U291cmNlQ29kZSBIVE1MU2NyaXB0UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1Nj
cmlwdChjb25zdCBQZW5kaW5nU2NyaXB0JiBzY3JpcHQsIGJvb2wmIGVycm9yT2NjdXJyZWQpCitT
Y3JpcHRTb3VyY2VDb2RlIEhUTUxTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0
KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9vbCYgZXJyb3JPY2N1cnJlZCkgY29uc3QK
IHsKICAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCgpKSB7CiAgICAgICAgIGVycm9yT2NjdXJy
ZWQgPSBzY3JpcHQuY2FjaGVkU2NyaXB0KCktPmVycm9yT2NjdXJyZWQoKTsKQEAgLTExOCw0MyAr
MTE4LDQ1IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29u
c3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEhU
TUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KCkKK3ZvaWQgSFRNTFNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKCFtX3Nj
cmlwdE5lc3RpbmdMZXZlbCk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0
c0xvYWRlZCgpKTsKLSAgICBib29sIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICBBU1NFUlQo
aXNQZW5kaW5nU2NyaXB0UmVhZHkobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpKTsKLSAgICBTY3Jp
cHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdCwgZXJyb3JPY2N1cnJlZCk7CiAKICAgICAvLyBTdG9wIHdhdGNoaW5n
IGxvYWRzIGJlZm9yZSBleGVjdXRlU2NyaXB0IHRvIHByZXZlbnQgcmVjdXJzaW9uIGlmIHRoZSBz
Y3JpcHQgcmVsb2FkcyBpdHNlbGYuCiAgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNh
Y2hlZFNjcmlwdCgpICYmIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgp
KQogICAgICAgICBzdG9wV2F0Y2hpbmdGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsK
IAotICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJh
bmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1l
bnQgPSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5yZWxlYXNlRWxlbWVudEFuZENsZWFyKCk7CiAg
ICAgewogICAgICAgICBOZXN0U2NyaXB0IG5lc3RpbmdMZXZlbChtX3NjcmlwdE5lc3RpbmdMZXZl
bCwgbV9ob3N0LT5pbnB1dFN0cmVhbSgpKTsKLSAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQpCi0g
ICAgICAgICAgICBzY3JpcHRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNjcmlwdEVycm9y
RXZlbnQoKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXhlY3V0ZVNjcmlwdChzY3Jp
cHRFbGVtZW50LmdldCgpLCBzb3VyY2VDb2RlKTsKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQt
PmRpc3BhdGNoRXZlbnQoY3JlYXRlU2NyaXB0TG9hZEV2ZW50KCkpOwotICAgICAgICB9CisgICAg
ICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CisgICAgICAg
IEFTU0VSVChpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKKyAgICAgICAgZXhlY3V0ZVBlbmRpbmdTY3Jp
cHRBbmREaXNwYXRjaEV2ZW50KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKICAgICB9CiAgICAg
QVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdFJ1bm5l
cjo6ZXhlY3V0ZVNjcmlwdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlKQordm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1Njcmlw
dEFuZERpc3BhdGNoRXZlbnQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkgY29uc3QKK3sK
KyAgICBib29sIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKKyAgICBTY3JpcHRTb3VyY2VDb2RlIHNv
dXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChwZW5kaW5nU2NyaXB0LCBlcnJvck9j
Y3VycmVkKTsKKyAgICAvLyBDbGVhciB0aGUgcGVuZGluZyBzY3JpcHQgYmVmb3JlIHBvc3NpYmxl
IHJlbnRyYW5jeSBmcm9tIGV4ZWN1dGVTY3JpcHQoKQorICAgIFJlZlB0cjxFbGVtZW50PiBzY3Jp
cHRFbGVtZW50ID0gcGVuZGluZ1NjcmlwdC5yZWxlYXNlRWxlbWVudEFuZENsZWFyKCk7CisgICAg
aWYgKGVycm9yT2NjdXJyZWQpCisgICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQo
Y3JlYXRlU2NyaXB0RXJyb3JFdmVudCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZXhlY3V0ZVNj
cmlwdChzY3JpcHRFbGVtZW50LmdldCgpLCBzb3VyY2VDb2RlKTsKKyAgICAgICAgc2NyaXB0RWxl
bWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKSk7CisgICAgfQorfQor
Cit2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHQoRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgY29uc3QKIHsKLSAgICAvLyBGSVhN
RTogV2UgZG8gbm90IGJsb2NrIGlubGluZSA8c2NyaXB0PiB0YWdzIG9uIHN0eWxlc2hlZXRzIGZv
ciBub3cuCi0gICAgLy8gV2hlbiB3ZSBkbywgIHx8ICFlbGVtZW50LT5oYXNBdHRyaWJ1dGUoc3Jj
QXR0cikgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbQotICAgIC8vIHRoZSBBU1NFUlQgYmVsb3cuICBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDQ3Ci0gICAgQVNT
RVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIHx8ICFlbGVtZW50LT5oYXNB
dHRyaWJ1dGUoc3JjQXR0cikpOwogICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0
b1NjcmlwdEVsZW1lbnQoZWxlbWVudCk7CiAgICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOwogICAg
IGlmICghc2NyaXB0RWxlbWVudC0+c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgQVNTRVJUKGlzRXhlY3V0aW5nU2NyaXB0KCkpOwogICAgIGlmICghbV9k
b2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9jdW1lbnQtPmZyYW1l
KCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOwpAQCAtMjA0LDcgKzIwNiw3
IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMo
KQogICAgICAgICAvLyBXZSBvbmx5IHJlYWxseSBuZWVkIHRvIGNoZWNrIG9uY2UuCiAgICAgICAg
IGlmICghaXNQZW5kaW5nU2NyaXB0UmVhZHkobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBleGVjdXRlUGVuZGluZ1NjcmlwdCgpOwor
ICAgICAgICBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0KCk7CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjI4LDMxICsyMzAsMzkgQEAgYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpl
eGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpCiAgICAgcmV0dXJuIGV4ZWN1dGVQ
YXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cmVx
dWVzdFNjcmlwdChFbGVtZW50KiBzY3JpcHQpCit2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJlcXVl
c3RQYXJzaW5nQmxvY2tpbmdTY3JpcHQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIXJl
cXVlc3RQZW5kaW5nU2NyaXB0KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LCBlbGVtZW50KSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hl
ZFNjcmlwdCgpKTsKKworICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBhIGxvYWQgY2FsbGJhY2sg
aWYgY2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5CisgICAgLy8gaW4gdGhlIGNhY2hlLiAgQ2Fs
bGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdAorICAg
IC8vIGlmIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byB0aGUgcGFyc2VyLgor
ICAgIGlmICghbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCktPmlzTG9hZGVk
KCkpCisgICAgICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7Cit9CisK
K2Jvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6cmVxdWVzdFBlbmRpbmdTY3JpcHQoUGVuZGluZ1Njcmlw
dCYgcGVuZGluZ1NjcmlwdCwgRWxlbWVudCogc2NyaXB0KSBjb25zdAogewotICAgIEFTU0VSVCgh
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudCgpKTsKLSAgICBBdG9taWNTdHJpbmcgc3Jj
VmFsdWUgPSBzY3JpcHQtPmdldEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBBU1NFUlQoIXBlbmRp
bmdTY3JpcHQuZWxlbWVudCgpKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNyY1ZhbHVlID0g
c2NyaXB0LT5nZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgLy8gQWxsb3cgdGhlIGhvc3QgdG8g
ZGlzbGxvdyBzY3JpcHQgbG9hZHMgKHVzaW5nIHRoZSBYU1NBdWRpdG9yLCBldGMuKQogICAgIGlm
ICghbV9ob3N0LT5zaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKHNyY1ZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcmVzb2x2ZSB0aGUgdXJsIHJlbGF0aXZlIHRvIHRoZSBlbGVtZW50LgogICAgIGlmICgh
c2NyaXB0LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChzcmNWYWx1ZSkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5hZG9wdEVsZW1lbnQoc2NyaXB0KTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBlbmRpbmdTY3JpcHQuYWRvcHRFbGVtZW50KHNjcmlw
dCk7CiAgICAgLy8gVGhpcyBzaG91bGQgY29ycmVjdGx5IHJldHVybiAwIGZvciBlbXB0eSBvciBp
bnZhbGlkIHNyY1ZhbHVlcy4KICAgICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCA9IG1fZG9j
dW1lbnQtPmRvY0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNyY1ZhbHVlLCB0b1NjcmlwdEVsZW1l
bnQoc2NyaXB0KS0+c2NyaXB0Q2hhcnNldCgpKTsKICAgICBpZiAoIWNhY2hlZFNjcmlwdCkgewog
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBEaXNwYXRjaCBlcnJvciBldmVudC4KLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgbV9wYXJzaW5n
QmxvY2tpbmdTY3JpcHQuc2V0Q2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCk7Ci0KLSAgICAvLyBX
ZSBvbmx5IGNhcmUgYWJvdXQgYSBsb2FkIGNhbGxiYWNrIGlmIGNhY2hlZFNjcmlwdCBpcyBub3Qg
YWxyZWFkeQotICAgIC8vIGluIHRoZSBjYWNoZS4gIENhbGxlcnMgd2lsbCBhdHRlbXB0IHRvIHJ1
biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQKLSAgICAvLyBpZiBwb3NzaWJsZSBiZWZvcmUg
cmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4KLSAgICBpZiAoIW1fcGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKQotICAgICAgICB3YXRjaEZvckxv
YWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpOworICAgIHBlbmRpbmdTY3JpcHQuc2V0Q2FjaGVk
U2NyaXB0KGNhY2hlZFNjcmlwdCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIFRoaXMgbWV0
aG9kIGlzIG1lYW50IHRvIG1hdGNoIHRoZSBIVE1MNSBkZWZpbml0aW9uIG9mICJydW5uaW5nIGEg
c2NyaXB0IgpAQCAtMjY4LDEwICsyNzgsMTMgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5T
Y3JpcHQoRWxlbWVudCogc2NyaXB0LCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKQogCiAgICAgICAg
IGlmIChzY3JpcHQtPmhhc0F0dHJpYnV0ZShzcmNBdHRyKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBkZWZlciBhbmQgYXN5bmMKLSAgICAgICAgICAgIHJlcXVlc3RTY3JpcHQoc2Ny
aXB0KTsKKyAgICAgICAgICAgIHJlcXVlc3RQYXJzaW5nQmxvY2tpbmdTY3JpcHQoc2NyaXB0KTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkbyBub3QgYmxvY2sg
aW5saW5lIDxzY3JpcHQ+IHRhZ3Mgb24gc3R5bGVzaGVldHMgdG8gbWF0Y2ggdGhlCi0gICAgICAg
ICAgICAvLyBvbGQgcGFyc2VyIGZvciBub3cuICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQwMDQ3CisgICAgICAgICAgICAvLyBvbGQgcGFyc2VyIGZvciBub3cu
ICBXaGVuIHdlIGRvLCB0aGUgQVNTRVJUIGJlbG93IHNob3VsZCBiZSBhZGRlZC4KKyAgICAgICAg
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwNDcK
KyAgICAgICAgICAgIC8vIEFTU0VSVChkb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSk7CisgICAgICAgICAgICBBU1NFUlQoaXNFeGVjdXRpbmdTY3JpcHQoKSk7CiAgICAgICAgICAg
ICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LT50ZXh0Q29udGVudCgpLCBkb2N1
bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50KSwgc3RhcnRpbmdMaW5lTnVtYmVy
KTsKICAgICAgICAgICAgIGV4ZWN1dGVTY3JpcHQoc2NyaXB0LCBzb3VyY2VDb2RlKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmgKaW5kZXggODU4MDFiMjk0NDEyZDg3YTQ5MGUwNmM5
ODVmZDY1ZmFiY2MxNTUzMC4uMjUyNDYzYTIzZTRjNTU0NzNjZWRhNzU1ZTljZWYwOTY5ZGQ4MDc2
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5oCkBAIC01NywyMCArNTcsMjIgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKIAorICAgIHZvaWQgZXhlY3V0ZVBh
cnNpbmdCbG9ja2luZ1NjcmlwdCgpOworICAgIHZvaWQgZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmRE
aXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmKSBjb25zdDsKKyAgICB2b2lkIGV4ZWN1dGVTY3Jp
cHQoRWxlbWVudCosIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKSBjb25zdDsKICAgICBib29sIGhh
dmVQYXJzaW5nQmxvY2tpbmdTY3JpcHQoKSBjb25zdDsKICAgICBib29sIGV4ZWN1dGVQYXJzaW5n
QmxvY2tpbmdTY3JpcHRzKCk7Ci0gICAgdm9pZCBleGVjdXRlUGVuZGluZ1NjcmlwdCgpOwogCi0g
ICAgdm9pZCByZXF1ZXN0U2NyaXB0KEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlcXVlc3RQYXJzaW5n
QmxvY2tpbmdTY3JpcHQoRWxlbWVudCopOworICAgIGJvb2wgcmVxdWVzdFBlbmRpbmdTY3JpcHQo
UGVuZGluZ1NjcmlwdCYsIEVsZW1lbnQqKSBjb25zdDsKKwogICAgIHZvaWQgcnVuU2NyaXB0KEVs
ZW1lbnQqLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKTsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGRl
YWxpbmcgd2l0aCBIVE1MU2NyaXB0UnVubmVySG9zdAogICAgIHZvaWQgd2F0Y2hGb3JMb2FkKFBl
bmRpbmdTY3JpcHQmKTsKICAgICB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoUGVuZGluZ1Njcmlw
dCYpOwotICAgIHZvaWQgZXhlY3V0ZVNjcmlwdChFbGVtZW50KiwgY29uc3QgU2NyaXB0U291cmNl
Q29kZSYpOwotCiAgICAgYm9vbCBpc1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5kaW5nU2Ny
aXB0Jik7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25z
dCBQZW5kaW5nU2NyaXB0JiwgYm9vbCYgZXJyb3JPY2N1cnJlZCk7CisgICAgU2NyaXB0U291cmNl
Q29kZSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5nU2NyaXB0JiwgYm9vbCYg
ZXJyb3JPY2N1cnJlZCkgY29uc3Q7CiAKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBI
VE1MU2NyaXB0UnVubmVySG9zdCogbV9ob3N0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64388</attachid>
            <date>2010-08-13 16:37:31 -0700</date>
            <delta_ts>2010-08-13 20:10:01 -0700</delta_ts>
            <desc>Separate nesting level from insertion point</desc>
            <filename>bug-43736-20100813163730.patch</filename>
            <type>text/plain</type>
            <size>11223</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDkxMDI4NGFiZDM2MjllOGM0ZmJhYjJlNTIxOTkwOTE2MjdkMjQyNS4uYzkwNWU3OWNlMzcyODQw
ZjliNTM4MzEzYzY5ZjMxNDIxMjk0MTk0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0xMSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxTY3JpcHRSdW5uZXIgdG8g
YWxsb3cgZGVmZXJyZWQgc2NyaXB0cyB0byBzaGFyZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzczNgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlCisKKyAgICAgICAgKiBodG1sL0hUTUxTY3Jp
cHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6c291cmNl
RnJvbVBlbmRpbmdTY3JpcHQpOiBNYWtlIGNvbnN0IHRvIGVuZm9yY2UgdGhlIGlkZWEgdGhhdCBp
dCBkb2Vzbid0IGNoYW5nZSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHQpOiBSZW5h
bWUgdG8gbWFrZSBpdCBjbGVhciB0aGlzIGRlYWxzIHdpdGggdGhlIHBhcnNpbmcgYmxvY2tpbmcg
c2NyaXB0IGFuZCByZWZhY3RvciB0byB1c2UgZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRj
aEV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRp
bmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KTogRmFjdG9yZWQgb3V0IG9mIGV4ZWN1dGVQZW5kaW5n
U2NyaXB0LCB0aGlzIGNhbiBiZSB1c2VkIGZvciBleGVjdXRpbmcgYW55IGV4dGVybmFsIHNjcmlw
dC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHQpOiBU
aGlzIGNhbiBiZSB1c2VkIGZvciBleGVjdXRpbmcgYW55IGlubGluZSBvciBleHRlcm5hbCBzY3Jp
cHQuIEFTU0VSVHMgbW92ZWQgdG8gdGhlIHR3byBjYWxsaW5nIHBvaW50cy4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKTog
TW92ZWQgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6cmVxdWVz
dFBhcnNpbmdCbG9ja2luZ1NjcmlwdCk6IEZhY3RvcmVkIG91dCByZXF1ZXN0UGVuZGluZ1Njcmlw
dC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RQZW5kaW5nU2Ny
aXB0KTogRmFjdG9yZWQgb3V0IGZyb20gcmVxZXVzdFBhcnNpbmdCbG9ja2luZ1NjcmlwdC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdCk6CisgICAgICAgICog
aHRtbC9IVE1MU2NyaXB0UnVubmVyLmg6CisKIDIwMTAtMDgtMTMgIExlYW5kcm8gUGVyZWlyYSAg
PGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWls
ZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAKaW5kZXggNGE5MDU4ZmFmNDVjZDg1MjFi
ZDNhYTM5YWUxMGYxZDViMGY3ZDVmZS4uMGQ2MDNlZGQxMDBhNDNiNTlmMjA2YTE5ODJjODViNTgw
OTEyM2QxOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmNwcApAQCAtNDMsMjMgKzQzLDIyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotY2xh
c3MgTmVzdFNjcmlwdCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisvLyBGSVhNRTogRmFjdG9yIG91
dCB0byBhdm9pZCBkdXBsaWNhdGlvbiB3aXRoIEhUTUxEb2N1bWVudFBhcnNlci4KK2NsYXNzIE5l
c3RpbmdMZXZlbEluY3JlbWVudGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAg
ICBOZXN0U2NyaXB0KHVuc2lnbmVkJiBuZXN0aW5nTGV2ZWwsIEhUTUxJbnB1dFN0cmVhbSYgaW5w
dXRTdHJlYW0pCisgICAgZXhwbGljaXQgTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIodW5zaWduZWQm
IG5lc3RpbmdMZXZlbCkKICAgICAgICAgOiBtX25lc3RpbmdMZXZlbCgmbmVzdGluZ0xldmVsKQot
ICAgICAgICAsIG1fc2F2ZWRJbnNlcnRpb25Qb2ludChpbnB1dFN0cmVhbSkKICAgICB7CiAgICAg
ICAgICsrKCptX25lc3RpbmdMZXZlbCk7CiAgICAgfQogCi0gICAgfk5lc3RTY3JpcHQoKQorICAg
IH5OZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcigpCiAgICAgewogICAgICAgICAtLSgqbV9uZXN0aW5n
TGV2ZWwpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCogbV9uZXN0aW5nTGV2ZWw7
Ci0gICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQgbV9zYXZlZEluc2VydGlvblBvaW50OwogfTsKIAog
SFRNTFNjcmlwdFJ1bm5lcjo6SFRNTFNjcmlwdFJ1bm5lcihEb2N1bWVudCogZG9jdW1lbnQsIEhU
TUxTY3JpcHRSdW5uZXJIb3N0KiBob3N0KQpAQCAtOTcsNyArOTYsNyBAQCBpbmxpbmUgUGFzc1Jl
ZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0RXJyb3JFdmVudCgpCiAgICAgcmV0dXJuIEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKTsKIH0KIAotU2NyaXB0
U291cmNlQ29kZSBIVE1MU2NyaXB0UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25z
dCBQZW5kaW5nU2NyaXB0JiBzY3JpcHQsIGJvb2wmIGVycm9yT2NjdXJyZWQpCitTY3JpcHRTb3Vy
Y2VDb2RlIEhUTUxTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBl
bmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9vbCYgZXJyb3JPY2N1cnJlZCkgY29uc3QKIHsKICAgICBp
ZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCgpKSB7CiAgICAgICAgIGVycm9yT2NjdXJyZWQgPSBzY3Jp
cHQuY2FjaGVkU2NyaXB0KCktPmVycm9yT2NjdXJyZWQoKTsKQEAgLTExOCwyMiArMTE3LDI5IEBA
IGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGlu
Z1NjcmlwdCYgc2NyaXB0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEhUTUxTY3JpcHRS
dW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KCkKK3ZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3Rp
bmdMZXZlbCk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgp
KTsKLSAgICBib29sIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICBBU1NFUlQoaXNQZW5kaW5n
U2NyaXB0UmVhZHkobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpKTsKLSAgICBTY3JpcHRTb3VyY2VD
b2RlIHNvdXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChtX3BhcnNpbmdCbG9ja2lu
Z1NjcmlwdCwgZXJyb3JPY2N1cnJlZCk7CiAKICAgICAvLyBTdG9wIHdhdGNoaW5nIGxvYWRzIGJl
Zm9yZSBleGVjdXRlU2NyaXB0IHRvIHByZXZlbnQgcmVjdXJzaW9uIGlmIHRoZSBzY3JpcHQgcmVs
b2FkcyBpdHNlbGYuCiAgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlw
dCgpICYmIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKQogICAgICAg
ICBzdG9wV2F0Y2hpbmdGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKIAorICAgIElu
c2VydGlvblBvaW50UmVjb3JkIGluc2VydGlvblBvaW50UmVjb3JkKG1faG9zdC0+aW5wdXRTdHJl
YW0oKSk7CisgICAgZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KG1fcGFyc2lu
Z0Jsb2NraW5nU2NyaXB0KTsKK30KKwordm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVu
ZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkK
K3sKKyAgICBib29sIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKKyAgICBTY3JpcHRTb3VyY2VDb2Rl
IHNvdXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChwZW5kaW5nU2NyaXB0LCBlcnJv
ck9jY3VycmVkKTsKKwogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9z
c2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCi0gICAgUmVmUHRyPEVsZW1lbnQ+
IHNjcmlwdEVsZW1lbnQgPSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5yZWxlYXNlRWxlbWVudEFu
ZENsZWFyKCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQgPSBwZW5kaW5nU2Ny
aXB0LnJlbGVhc2VFbGVtZW50QW5kQ2xlYXIoKTsKICAgICB7Ci0gICAgICAgIE5lc3RTY3JpcHQg
bmVzdGluZ0xldmVsKG1fc2NyaXB0TmVzdGluZ0xldmVsLCBtX2hvc3QtPmlucHV0U3RyZWFtKCkp
OworICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRl
cihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAgICAgICAgIGlmIChlcnJvck9jY3VycmVkKQogICAg
ICAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRFcnJvckV2
ZW50KCkpOwogICAgICAgICBlbHNlIHsKQEAgLTE0NCwxMiArMTUwLDggQEAgdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCgpCiAgICAgQVNTRVJUKCFtX3NjcmlwdE5l
c3RpbmdMZXZlbCk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdChF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQordm9p
ZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdl
IGRvIG5vdCBibG9jayBpbmxpbmUgPHNjcmlwdD4gdGFncyBvbiBzdHlsZXNoZWV0cyBmb3Igbm93
LgotICAgIC8vIFdoZW4gd2UgZG8sICB8fCAhZWxlbWVudC0+aGFzQXR0cmlidXRlKHNyY0F0dHIp
IHNob3VsZCBiZSByZW1vdmVkIGZyb20KLSAgICAvLyB0aGUgQVNTRVJUIGJlbG93LiAgU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA0NwotICAgIEFTU0VSVCht
X2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSB8fCAhZWxlbWVudC0+aGFzQXR0cmli
dXRlKHNyY0F0dHIpKTsKICAgICBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0gdG9TY3Jp
cHRFbGVtZW50KGVsZW1lbnQpOwogICAgIEFTU0VSVChzY3JpcHRFbGVtZW50KTsKICAgICBpZiAo
IXNjcmlwdEVsZW1lbnQtPnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSkKQEAgLTIwNCw3ICsy
MDYsNyBAQCBib29sIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3Jp
cHRzKCkKICAgICAgICAgLy8gV2Ugb25seSByZWFsbHkgbmVlZCB0byBjaGVjayBvbmNlLgogICAg
ICAgICBpZiAoIWlzUGVuZGluZ1NjcmlwdFJlYWR5KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZXhlY3V0ZVBlbmRpbmdTY3JpcHQo
KTsKKyAgICAgICAgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCgpOwogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyOCwzMSArMjMwLDM5IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5l
cjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogICAgIHJldHVybiBleGVj
dXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOwogfQogCi12b2lkIEhUTUxTY3JpcHRSdW5uZXI6
OnJlcXVlc3RTY3JpcHQoRWxlbWVudCogc2NyaXB0KQordm9pZCBIVE1MU2NyaXB0UnVubmVyOjpy
ZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNT
RVJUKCFtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50KCkpOwotICAgIEF0b21pY1N0cmlu
ZyBzcmNWYWx1ZSA9IHNjcmlwdC0+Z2V0QXR0cmlidXRlKHNyY0F0dHIpOworICAgIGlmICghcmVx
dWVzdFBlbmRpbmdTY3JpcHQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQsIGVsZW1lbnQpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVk
U2NyaXB0KCkpOworCisgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IGEgbG9hZCBjYWxsYmFjayBp
ZiBjYWNoZWRTY3JpcHQgaXMgbm90IGFscmVhZHkKKyAgICAvLyBpbiB0aGUgY2FjaGUuICBDYWxs
ZXJzIHdpbGwgYXR0ZW1wdCB0byBydW4gdGhlIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0CisgICAg
Ly8gaWYgcG9zc2libGUgYmVmb3JlIHJldHVybmluZyBjb250cm9sIHRvIHRoZSBwYXJzZXIuCisg
ICAgaWYgKCFtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQo
KSkKKyAgICAgICAgd2F0Y2hGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKK30KKwor
Ym9vbCBIVE1MU2NyaXB0UnVubmVyOjpyZXF1ZXN0UGVuZGluZ1NjcmlwdChQZW5kaW5nU2NyaXB0
JiBwZW5kaW5nU2NyaXB0LCBFbGVtZW50KiBzY3JpcHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFw
ZW5kaW5nU2NyaXB0LmVsZW1lbnQoKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzcmNWYWx1
ZSA9IHNjcmlwdC0+Z2V0QXR0cmlidXRlKHNyY0F0dHIpOwogICAgIC8vIEFsbG93IHRoZSBob3N0
IHRvIGRpc2xsb3cgc2NyaXB0IGxvYWRzICh1c2luZyB0aGUgWFNTQXVkaXRvciwgZXRjLikKICAg
ICBpZiAoIW1faG9zdC0+c2hvdWxkTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhzcmNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIHJlc29sdmUgdGhlIHVybCByZWxhdGl2ZSB0byB0aGUgZWxlbWVudC4KICAgICBp
ZiAoIXNjcmlwdC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc3JjVmFsdWUpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuYWRvcHRFbGVtZW50KHNjcmlwdCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwZW5kaW5nU2NyaXB0LmFkb3B0RWxlbWVudChz
Y3JpcHQpOwogICAgIC8vIFRoaXMgc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gMCBmb3IgZW1wdHkg
b3IgaW52YWxpZCBzcmNWYWx1ZXMuCiAgICAgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQgPSBt
X2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChzcmNWYWx1ZSwgdG9TY3JpcHRF
bGVtZW50KHNjcmlwdCktPnNjcmlwdENoYXJzZXQoKSk7CiAgICAgaWYgKCFjYWNoZWRTY3JpcHQp
IHsKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gRGlzcGF0Y2ggZXJyb3IgZXZlbnQuCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQotICAgIG1fcGFy
c2luZ0Jsb2NraW5nU2NyaXB0LnNldENhY2hlZFNjcmlwdChjYWNoZWRTY3JpcHQpOwotCi0gICAg
Ly8gV2Ugb25seSBjYXJlIGFib3V0IGEgbG9hZCBjYWxsYmFjayBpZiBjYWNoZWRTY3JpcHQgaXMg
bm90IGFscmVhZHkKLSAgICAvLyBpbiB0aGUgY2FjaGUuICBDYWxsZXJzIHdpbGwgYXR0ZW1wdCB0
byBydW4gdGhlIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0Ci0gICAgLy8gaWYgcG9zc2libGUgYmVm
b3JlIHJldHVybmluZyBjb250cm9sIHRvIHRoZSBwYXJzZXIuCi0gICAgaWYgKCFtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSkKLSAgICAgICAgd2F0Y2hG
b3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKKyAgICBwZW5kaW5nU2NyaXB0LnNldENh
Y2hlZFNjcmlwdChjYWNoZWRTY3JpcHQpOworICAgIHJldHVybiB0cnVlOwogfQogCiAvLyBUaGlz
IG1ldGhvZCBpcyBtZWFudCB0byBtYXRjaCB0aGUgSFRNTDUgZGVmaW5pdGlvbiBvZiAicnVubmlu
ZyBhIHNjcmlwdCIKQEAgLTI2MSwxNyArMjcxLDIxIEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6
cnVuU2NyaXB0KEVsZW1lbnQqIHNjcmlwdCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKIHsKICAg
ICBBU1NFUlQoIWhhdmVQYXJzaW5nQmxvY2tpbmdTY3JpcHQoKSk7CiAgICAgewotICAgICAgICBO
ZXN0U2NyaXB0IG5lc3RpbmdMZXZlbChtX3NjcmlwdE5lc3RpbmdMZXZlbCwgbV9ob3N0LT5pbnB1
dFN0cmVhbSgpKTsKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQgaW5zZXJ0aW9uUG9pbnRS
ZWNvcmQobV9ob3N0LT5pbnB1dFN0cmVhbSgpKTsKKyAgICAgICAgTmVzdGluZ0xldmVsSW5jcmVt
ZW50ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50ZXIobV9zY3JpcHROZXN0aW5nTGV2ZWwpOwogCiAg
ICAgICAgIC8vIENoZWNrIHNjcmlwdCB0eXBlIGFuZCBsYW5ndWFnZSwgY3VycmVudCBjb2RlIHVz
ZXMgU2NyaXB0RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpLCBidXQgdGhhdCBt
YXkgbm90IGJlIEhUTUw1IGNvbXBsaWFudC4KICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8g
ZXZlbnQgZm9yIHN1cHBvcnQKIAogICAgICAgICBpZiAoc2NyaXB0LT5oYXNBdHRyaWJ1dGUoc3Jj
QXR0cikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgZGVmZXIgYW5kIGFzeW5jCi0g
ICAgICAgICAgICByZXF1ZXN0U2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICByZXF1ZXN0UGFy
c2luZ0Jsb2NraW5nU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogV2UgZG8gbm90IGJsb2NrIGlubGluZSA8c2NyaXB0PiB0YWdzIG9uIHN0eWxl
c2hlZXRzIHRvIG1hdGNoIHRoZQotICAgICAgICAgICAgLy8gb2xkIHBhcnNlciBmb3Igbm93LiAg
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA0NworICAgICAg
ICAgICAgLy8gb2xkIHBhcnNlciBmb3Igbm93LiAgV2hlbiB3ZSBkbywgdGhlIEFTU0VSVCBiZWxv
dyBzaG91bGQgYmUgYWRkZWQuCisgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDQ3CisgICAgICAgICAgICAvLyBBU1NFUlQoZG9jdW1l
bnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOworICAgICAgICAgICAgQVNTRVJUKGlzRXhl
Y3V0aW5nU2NyaXB0KCkpOwogICAgICAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdC0+dGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24obV9k
b2N1bWVudCksIHN0YXJ0aW5nTGluZU51bWJlcik7CiAgICAgICAgICAgICBleGVjdXRlU2NyaXB0
KHNjcmlwdCwgc291cmNlQ29kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0UnVubmVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5oCmlu
ZGV4IDg1ODAxYjI5NDQxMmQ4N2E0OTBlMDZjOTg1ZmQ2NWZhYmNjMTU1MzAuLjk4MWQ0MzNlZWZi
NmQzZTRiZmU5YmJmMzcwY2M4MWMwNjJhZTJmMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0UnVubmVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuaApA
QCAtNTIsMjUgKzUyLDI3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NjcmlwdHNXYWl0aW5nRm9y
U3R5bGVzaGVldHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVz
aGVldHM7IH0KICAgICBib29sIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7
CiAKLSAgICBib29sIGlzRXhlY3V0aW5nU2NyaXB0KCkgeyByZXR1cm4gISFtX3NjcmlwdE5lc3Rp
bmdMZXZlbDsgfQorICAgIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdCB7IHJldHVybiAh
IW1fc2NyaXB0TmVzdGluZ0xldmVsOyB9CiAKIHByaXZhdGU6CiAgICAgRnJhbWUqIGZyYW1lKCkg
Y29uc3Q7CiAKKyAgICB2b2lkIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHQoKTsKKyAgICB2
b2lkIGV4ZWN1dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0Jik7
CisgICAgdm9pZCBleGVjdXRlU2NyaXB0KEVsZW1lbnQqLCBjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JikgY29uc3Q7CiAgICAgYm9vbCBoYXZlUGFyc2luZ0Jsb2NraW5nU2NyaXB0KCkgY29uc3Q7CiAg
ICAgYm9vbCBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOwotICAgIHZvaWQgZXhlY3V0
ZVBlbmRpbmdTY3JpcHQoKTsKIAotICAgIHZvaWQgcmVxdWVzdFNjcmlwdChFbGVtZW50Kik7Cisg
ICAgdm9pZCByZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0KEVsZW1lbnQqKTsKKyAgICBib29s
IHJlcXVlc3RQZW5kaW5nU2NyaXB0KFBlbmRpbmdTY3JpcHQmLCBFbGVtZW50KikgY29uc3Q7CisK
ICAgICB2b2lkIHJ1blNjcmlwdChFbGVtZW50KiwgaW50IHN0YXJ0aW5nTGluZU51bWJlcik7CiAK
ICAgICAvLyBIZWxwZXJzIGZvciBkZWFsaW5nIHdpdGggSFRNTFNjcmlwdFJ1bm5lckhvc3QKICAg
ICB2b2lkIHdhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0Jik7CiAgICAgdm9pZCBzdG9wV2F0Y2hp
bmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmKTsKLSAgICB2b2lkIGV4ZWN1dGVTY3JpcHQoRWxlbWVu
dCosIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLQogICAgIGJvb2wgaXNQZW5kaW5nU2NyaXB0
UmVhZHkoY29uc3QgUGVuZGluZ1NjcmlwdCYpOwotICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNl
RnJvbVBlbmRpbmdTY3JpcHQoY29uc3QgUGVuZGluZ1NjcmlwdCYsIGJvb2wmIGVycm9yT2NjdXJy
ZWQpOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlRnJvbVBlbmRpbmdTY3JpcHQoY29uc3Qg
UGVuZGluZ1NjcmlwdCYsIGJvb2wmIGVycm9yT2NjdXJyZWQpIGNvbnN0OwogCiAgICAgRG9jdW1l
bnQqIG1fZG9jdW1lbnQ7CiAgICAgSFRNTFNjcmlwdFJ1bm5lckhvc3QqIG1faG9zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>