<?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>103096</bug_id>
          
          <creation_ts>2012-11-22 16:48:52 -0800</creation_ts>
          <short_desc>REGRESSION(r135493): HTMLCollection and DynamicNodeList have two vtable pointers</short_desc>
          <delta_ts>2012-11-26 14:32:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>78909</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>774140</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-22 16:48:52 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/135493 increased the size of each DynamicNodeList and HTMLCollection by 4 to 8 bytes (on 32-bit and 64-bit builds respectively) by adding a new vtable pointer to DynamicNodeListCacheBase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774186</commentid>
    <comment_count>1</comment_count>
      <attachid>175731</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-22 20:55:59 -0800</bug_when>
    <thetext>Created attachment 175731
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774188</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-22 20:58:32 -0800</bug_when>
    <thetext>This should be your favorite patch of the day. It reduces memory usage by removing multiple inheritance and removing redundant code!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774189</commentid>
    <comment_count>3</comment_count>
      <attachid>175732</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-22 20:59:55 -0800</bug_when>
    <thetext>Created attachment 175732
Fixed the typo: REGRESSIN</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774192</commentid>
    <comment_count>4</comment_count>
      <attachid>175732</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-22 21:05:56 -0800</bug_when>
    <thetext>Comment on attachment 175732
Fixed the typo: REGRESSIN

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

&gt; Source/WebCore/dom/DynamicNodeList.h:71
&gt;      virtual void reportMemoryUsage(MemoryObjectInfo*) const;

I wonder if I can get rid of this function now. Any ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774199</commentid>
    <comment_count>5</comment_count>
      <attachid>175732</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-22 21:36:50 -0800</bug_when>
    <thetext>Comment on attachment 175732
Fixed the typo: REGRESSIN

Attachment 175732 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14965569</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774215</commentid>
    <comment_count>6</comment_count>
      <attachid>175736</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-22 22:15:13 -0800</bug_when>
    <thetext>Created attachment 175736
rniwa&apos;s patch with chromium compilation fix and native memory instrumentation fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774230</commentid>
    <comment_count>7</comment_count>
      <attachid>175736</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-22 23:01:22 -0800</bug_when>
    <thetext>Comment on attachment 175736
rniwa&apos;s patch with chromium compilation fix and native memory instrumentation fix

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

&gt; Source/WebCore/dom/DynamicNodeList.h:44
&gt; -class DynamicNodeListCacheBase {
&gt; +class DynamicNodeListCacheBase : public NodeList {

Now HTMLCollection has two copies of ScriptWrappable as a base clase: one from NodeList and one from HTMLCollection.  You can just remove the one in HTMLCollection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774231</commentid>
    <comment_count>8</comment_count>
      <attachid>175736</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-22 23:05:38 -0800</bug_when>
    <thetext>Comment on attachment 175736
rniwa&apos;s patch with chromium compilation fix and native memory instrumentation fix

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

&gt;&gt; Source/WebCore/dom/DynamicNodeList.h:44
&gt;&gt; +class DynamicNodeListCacheBase : public NodeList {
&gt; 
&gt; Now HTMLCollection has two copies of ScriptWrappable as a base clase: one from NodeList and one from HTMLCollection.  You can just remove the one in HTMLCollection.

As far as I see rniwa has fixed this problem in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774232</commentid>
    <comment_count>9</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-22 23:11:11 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=175736) [details]
&gt; rniwa&apos;s patch with chromium compilation fix and native memory instrumentation fix

As far as I see rniwa has fixed this problem in this patch.
See HTMLCollection.h:36

r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774233</commentid>
    <comment_count>10</comment_count>
      <attachid>175736</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-22 23:13:01 -0800</bug_when>
    <thetext>Comment on attachment 175736
rniwa&apos;s patch with chromium compilation fix and native memory instrumentation fix

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

&gt; Source/WebCore/html/HTMLCollection.h:36
&gt; -class HTMLCollection : public ScriptWrappable, public RefCounted&lt;HTMLCollection&gt;, public DynamicNodeListCacheBase {
&gt; +class HTMLCollection : public DynamicNodeListCacheBase {

Ah, great!  I&apos;m not sure how I missed this part of the change earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774703</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-23 14:26:23 -0800</bug_when>
    <thetext>I don&apos;t love DynamicNodeListCacheBase inheriting from NodeList.  If it is going to be an isa relationship, can we find a better name for DynamicNodeListCacheBase?  Maybe just DynamicNodeListBase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774734</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-23 17:56:04 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I don&apos;t love DynamicNodeListCacheBase inheriting from NodeList.  If it is going to be an isa relationship, can we find a better name for DynamicNodeListCacheBase?  Maybe just DynamicNodeListBase?

Yeah, I&apos;m planning to do renames in a follow up. For starters, we should rename DynamicNodeList to LiveNodeList to match the terminologies in specifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774738</commentid>
    <comment_count>13</comment_count>
      <attachid>175842</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-23 18:13:36 -0800</bug_when>
    <thetext>Created attachment 175842
Put back inline comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774782</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-23 22:53:00 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; I don&apos;t love DynamicNodeListCacheBase inheriting from NodeList.  If it is going to be an isa relationship, can we find a better name for DynamicNodeListCacheBase?  Maybe just DynamicNodeListBase?
&gt; 
&gt; Yeah, I&apos;m planning to do renames in a follow up. For starters, we should rename DynamicNodeList to LiveNodeList to match the terminologies in specifications.

I always liked DynamicNodeList (since it is opposed to StaticNodeList).  But my real issue is with the CacheBase part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774902</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-24 17:15:09 -0800</bug_when>
    <thetext>r(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; I don&apos;t love DynamicNodeListCacheBase inheriting from NodeList.  If it is going to be an isa relationship, can we find a better name for DynamicNodeListCacheBase?  Maybe just DynamicNodeListBase?
&gt; &gt; 
&gt; &gt; Yeah, I&apos;m planning to do renames in a follow up. For starters, we should rename DynamicNodeList to LiveNodeList to match the terminologies in specifications.
&gt; 
&gt; I always liked DynamicNodeList (since it is opposed to StaticNodeList).  But my real issue is with the CacheBase part.

Sure, of course. Do you want me to do the rename in this patch? I was planning to do in a separate patch since it&apos;ll make the diff messier but if you strongly feel that we should do the rename in the same patch, I can do that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774915</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-24 18:19:14 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; r(In reply to comment #14)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; &gt; I don&apos;t love DynamicNodeListCacheBase inheriting from NodeList.  If it is going to be an isa relationship, can we find a better name for DynamicNodeListCacheBase?  Maybe just DynamicNodeListBase?
&gt; &gt; &gt; 
&gt; &gt; &gt; Yeah, I&apos;m planning to do renames in a follow up. For starters, we should rename DynamicNodeList to LiveNodeList to match the terminologies in specifications.
&gt; &gt; 
&gt; &gt; I always liked DynamicNodeList (since it is opposed to StaticNodeList).  But my real issue is with the CacheBase part.
&gt; 
&gt; Sure, of course. Do you want me to do the rename in this patch? I was planning to do in a separate patch since it&apos;ll make the diff messier but if you strongly feel that we should do the rename in the same patch, I can do that as well.

No, I don&apos;t this should be blocked on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774916</commentid>
    <comment_count>17</comment_count>
      <attachid>175842</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-24 18:20:16 -0800</bug_when>
    <thetext>Comment on attachment 175842
Put back inline comments

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

&gt; Source/WebCore/dom/DynamicNodeList.h:45
&gt; +class DynamicNodeListCacheBase : public NodeList {
&gt;  public:

Please do add a FIXME about how horrible a name this is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774946</commentid>
    <comment_count>18</comment_count>
      <attachid>175842</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-24 23:22:22 -0800</bug_when>
    <thetext>Comment on attachment 175842
Put back inline comments

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

&gt;&gt; Source/WebCore/dom/DynamicNodeList.h:45
&gt;&gt;  public:
&gt; 
&gt; Please do add a FIXME about how horrible a name this is now.

Will do. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774950</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-25 00:02:06 -0800</bug_when>
    <thetext>Committed r135667: &lt;http://trac.webkit.org/changeset/135667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775875</commentid>
    <comment_count>20</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-26 14:11:37 -0800</bug_when>
    <thetext>FWIW, this fix also had a ~7% improvement for some of the Chromium perf tests:
http://build.chromium.org/f/chromium/perf/mac-release-10.6-webkit-latest/intl1/report.html?history=50&amp;rev=169445</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775902</commentid>
    <comment_count>21</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-26 14:32:05 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; FWIW, this fix also had a ~7% improvement for some of the Chromium perf tests:
&gt; http://build.chromium.org/f/chromium/perf/mac-release-10.6-webkit-latest/intl1/report.html?history=50&amp;rev=169445

Whoops, nevermind. It was 135666.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175731</attachid>
            <date>2012-11-22 20:55:59 -0800</date>
            <delta_ts>2012-11-22 20:59:52 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-103096-20121122205343.patch</filename>
            <type>text/plain</type>
            <size>14185</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTExLTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJTihyMTM1NDkzKTog
SFRNTENvbGxlY3Rpb24gYW5kIER5bmFtaWNOb2RlTGlzdCBoYXZlIHR3byB2dGFibGUgcG9pbnRl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzA5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIGluaGVyaXQgZnJvbSBOb2RlTGlzdC4gV2hpbGUgSFRN
TENvbGxlY3Rpb24gZG9lc24ndCBpbmhlcml0CisgICAgICAgIGZyb20gTm9kZUxpc3QgaW4gSURM
LCBpdCBtYWtlcyBhIGxvdCBvZiBzZW5zZSBmb3IgdGhlIEMrKyBpbXBsZW1lbnRhdGlvbiB0byBk
byBzbyB2aWEKKyAgICAgICAgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHNpbmNlIEhUTUxDb2xs
ZWN0aW9uIGFuZCBsaXZlIE5vZGVMaXN0IHNoYXJlIGEgbG90IG9mIGNvZGUgaW4KKyAgICAgICAg
RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlLgorCisgICAgICAgIFRoaXMgbGV0cyByZW1vdmUgcHJv
eGllcyBmb3IgaXRlbSgpIGFuZCBsZW5ndGgoKSBpbiBEeW5hbWljTm9kZUxpc3QgYW5kIEhUTUxD
b2xsZWN0aW9uCisgICAgICAgIGFuZCBkaXJlY3RseSBpbXBsZW1lbnQgdGhlbSBpbiBEeW5hbWlj
Tm9kZUxpc3RDYWNoZUJhc2Ugd2hpY2ggdXNlZCB0byBwcm92aWRlIGl0ZW1Db21tb24oKQorICAg
ICAgICBhbmQgbGVuZ3RoQ29tbW9uKCkuCisKKyAgICAgICAgQWxzbyByZW5hbWVkIE5vZGVMaXN0
OjppdGVtV2l0aE5hbWUoKSB0byBOb2RlTGlzdDo6bmFtZWRJdGVtKCkgdG8gbWF0Y2ggSFRNTENv
bGxlY3Rpb24ncworICAgICAgICBuYW1pbmcgY29udmVudGlvbi4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlTGlz
dDo6Y2FuR2V0SXRlbXNGb3JOYW1lKTogQ2FsbHMgbmFtZWRJdGVtLCB3aGljaCBoYXMgYmVlbiBy
ZW5hbWVkIGZyb20KKyAgICAgICAgaXRlbVdpdGhOYW1lLgorICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlTGlzdDo6bmFtZUdldHRlcik6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZUxpc3Q6Om5h
bWVkUHJvcGVydHlHZXR0ZXIpOiBEaXR0by4KKyAgICAgICAgKiBkb20vQ2hpbGROb2RlTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVMaXN0Ojpub2RlTWF0Y2hlcyk6IFVwZGF0
ZWQgY29tbWVudC4KKyAgICAgICAgKiBkb20vRHluYW1pY05vZGVMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdDo6bmFtZWRJdGVtKTogUmVuYW1lZCBmcm9tIGl0ZW1X
aXRoTmFtZS4KKyAgICAgICAgKiBkb20vRHluYW1pY05vZGVMaXN0Lmg6CisgICAgICAgIChEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2UpOiBJbmhlcnRpcyBmcm9tIE5vZGVMaXN0IGFuZCByZW5hbWVk
IGxlbmd0aENvbW1vbiBhbmQgaXRlbUNvbW1vbgorICAgICAgICB0byB2aXJ0dWFsIGxlbmd0aCBh
bmQgaXRlbSByZXNwZWN0aXZlbHkuCisgICAgICAgIChEeW5hbWljTm9kZUxpc3QpOiBOb3cgaW5o
ZXJpdHMgZnJvbSBqdXN0IER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBpbnN0ZWFkIG9mIE5vZGVM
aXN0CisgICAgICAgIGFuZCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Ugc2luY2UgdGhlIGZvcm1l
ciBub3cgaW5oZXJ0aXMgZnJvbSBOb2RlTGlzdC4gQWxzbyByZW1vdmVkCisgICAgICAgIGxlbmd0
aCgpIGFuZCBpdGVtKCkgc2luY2UgdGhleSdyZSBpbXBsZW1lbnRlZCBpbiBEeW5hbWljTm9kZUxp
c3RDYWNoZUJhc2Ugbm93IGFuZCByZW5hbWVkCisgICAgICAgIGl0ZW1XaXRoTmFtZSgpIHRvIG5h
bWVkSXRlbSgpIHRvIG1hdGNoIEhUTUxDb2xsZWN0aW9uJ3MgbmFtaW5nIGNvbnZlbnRpb24uCisg
ICAgICAgICogZG9tL05vZGVMaXN0Lmg6CisgICAgICAgIChOb2RlTGlzdDo6bmFtZWRJdGVtKTog
UmVuYW1lZCBmcm9tIGl0ZW1XaXRoTmFtZS4gTm90ZSB0aGF0IHRoaXMgbWVtYmVyIGZ1bmN0aW9u
IGlzIG5vdAorICAgICAgICBleHBvc2VkIHZpYSBJREwuIEl0J3MgbWVyZWx5IHVzZWQgaW4gdGhl
IGJpbmRpbmcgY29kZS4KKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0hhc2hTZXROb2RlTGlzdDo6bmFtZWRJdGVtKTogRGl0
dG8uCisgICAgICAgICogZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oOgorICAgICAgICAoU3Rh
dGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0ZW0pOiBEaXR0by4KKyAgICAgICAgKiBkb20vU3Rh
dGljTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljTm9kZUxpc3Q6Om5hbWVk
SXRlbSk6IERpdHRvLgorICAgICAgICAqIGRvbS9TdGF0aWNOb2RlTGlzdC5oOgorICAgICAgICAo
U3RhdGljTm9kZUxpc3Q6Om5hbWVkSXRlbSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTENv
bGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNl
OjpsZW5ndGgpOiBSZW5hbWVkIGZyb20gbGVuZ3RoQ29tbW9uLgorICAgICAgICAoV2ViQ29yZTo6
RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppdGVtKTogUmVuYW1lZCBmcm9tIGl0ZW1Db21tb24u
CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAoSFRNTENvbGxlY3Rp
b24pOiBJbmhlcml0cyBmcm9tIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBzaW5jZSBEeW5hbWlj
Tm9kZUxpc3RDYWNoZUJhc2UKKyAgICAgICAgaXMgYWxyZWFkeSBSZWZDb3VudCdlZCBhbmQgTm9k
ZUxpc3QsIGZyb20gd2hpY2ggRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIGluaGVyaXRzLAorICAg
ICAgICBpbmhlcml0cyBmcm9tIFNjcmlwdFdyYXBwYWJsZS4KKwogMjAxMi0xMS0yMiAgSm9obiBN
ZWxsb3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzog
SW1wcm92ZSBoYW5kbGluZyBvZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDEzNTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMyArNDgsMTMgQEAgYm9vbCBKU05vZGVM
aXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYQogCiBib29sIEpTTm9kZUxpc3Q6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOb2RlTGlzdCogaW1wbCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKLSAgICByZXR1cm4gaW1wbC0+aXRlbVdpdGhOYW1lKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBpbXBsLT5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKIEpTVmFsdWUg
SlNOb2RlTGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNOb2RlTGlzdCogdGhpc09iaiA9
IGpzQ2FzdDxKU05vZGVMaXN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICByZXR1cm4gdG9K
UyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5pdGVtV2l0
aE5hbWUocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJl
dHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCkt
Pm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDEz
NTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhOb2RlTGlzdDo6bmFtZWRQCiAgICAgaWYgKGtleSA9PSBsZW5ndGgpCiAgICAgICAg
IHJldHVybiB2OEludGVnZXIobGlzdC0+bGVuZ3RoKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAot
ICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBsaXN0LT5pdGVtV2l0aE5hbWUoa2V5KTsKKyAgICBS
ZWZQdHI8Tm9kZT4gcmVzdWx0ID0gbGlzdC0+bmFtZWRJdGVtKGtleSk7CiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vQ2hpbGROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgQ2hp
bGROb2RlTGlzdDo6fkNoaWxkTm9kZUxpc3QoKQogCiBib29sIENoaWxkTm9kZUxpc3Q6Om5vZGVN
YXRjaGVzKEVsZW1lbnQqIHRlc3ROb2RlKSBjb25zdAogewotICAgIC8vIFRoaXMgZnVuY3Rpb24g
d2lsbCBiZSBjYWxsZWQgb25seSBieSBEeW5hbWljTm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZSwKKyAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgYnkgRHluYW1pY05vZGVMaXN0
OjpuYW1lZEl0ZW0sCiAgICAgLy8gZm9yIGFuIGVsZW1lbnQgdGhhdCB3YXMgbG9jYXRlZCB3aXRo
IGdldEVsZW1lbnRCeUlkLgogICAgIHJldHVybiB0ZXN0Tm9kZS0+cGFyZW50Tm9kZSgpID09IHJv
b3ROb2RlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAko
cmV2aXNpb24gMTM1NTM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwxNyArMTAyLDcgQEAgdm9pZCBEeW5hbWljU3VidHJl
ZU5vZGVMaXN0OjpyZXBvcnRNZW1vcgogICAgIER5bmFtaWNOb2RlTGlzdDo6cmVwb3J0TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiB9CiAKLXVuc2lnbmVkIER5bmFtaWNOb2RlTGlzdDo6
bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbGVuZ3RoQ29tbW9uKCk7Ci19Ci0KLU5vZGUq
IER5bmFtaWNOb2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGl0ZW1Db21tb24ob2Zmc2V0KTsKLX0KLQotTm9kZSogRHluYW1pY05vZGVMaXN0OjppdGVt
V2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CitOb2RlKiBEeW5h
bWljTm9kZUxpc3Q6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29u
c3QKIHsKICAgICBOb2RlKiByb290Tm9kZSA9IHRoaXMtPnJvb3ROb2RlKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgJKHJldmlzaW9uIDEzNTUzNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBlbnVtIE5vZGVMaXN0Um9vdFR5cGUgewogICAgIE5vZGVMaXN0SXNSb290ZWRBdERv
Y3VtZW50SWZPd25lckhhc0l0ZW1yZWZBdHRyLAogfTsKIAotY2xhc3MgRHluYW1pY05vZGVMaXN0
Q2FjaGVCYXNlIHsKK2NsYXNzIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSA6IHB1YmxpYyBOb2Rl
TGlzdCB7CiBwdWJsaWM6CiAgICAgZW51bSBJdGVtQWZ0ZXJPdmVycmlkZVR5cGUgewogICAgICAg
ICBPdmVycmlkZXNJdGVtQWZ0ZXIsCkBAIC02OCwxMSArNjgsMTIgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoIW1fb3ZlcnJpZGVzSXRlbUFmdGVyIHx8ICFpc05vZGVMaXN0KGNvbGxlY3Rpb25U
eXBlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKCkg
eyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCi1wdWJsaWM6CisgICAgLy8gRE9NIEFQSQorICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2ln
bmVkIG9mZnNldCkgY29uc3QgT1ZFUlJJREU7CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFz
SWROYW1lQ2FjaGUoKSBjb25zdCB7IHJldHVybiAhaXNOb2RlTGlzdCh0eXBlKCkpOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdFR5cGUgPT0gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQgfHwgbV9yb290VHlwZSA9PSBO
b2RlTGlzdElzUm9vdGVkQXREb2N1bWVudElmT3duZXJIYXNJdGVtcmVmQXR0cjsgfQogICAgIEFM
V0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFsaWRhdGlvblR5cGU+KG1faW52
YWxpZGF0aW9uVHlwZSk7IH0KQEAgLTEyMyw4ICsxMjQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBoYXNOYW1lQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmFtZUNhY2hlVmFsaWQ7IH0KICAg
ICB2b2lkIHNldEhhc05hbWVDYWNoZSgpIGNvbnN0IHsgbV9pc05hbWVDYWNoZVZhbGlkID0gdHJ1
ZTsgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoQ29tbW9uKCkgY29uc3Q7Ci0gICAgTm9kZSogaXRl
bUNvbW1vbih1bnNpZ25lZCBvZmZzZXQpIGNvbnN0OwogICAgIE5vZGUqIGl0ZW1CZWZvcmVPckFm
dGVyQ2FjaGVkSXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0OwogICAgIE5vZGUqIGl0ZW1BZnRl
cih1bnNpZ25lZCYsIE5vZGUqIHByZXZpb3VzSXRlbSkgY29uc3Q7CiAKQEAgLTE4Miw3ICsxODEs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgRHluYW1pY05vZGVMaXN0Q2FjaGVCCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1jbGFzcyBEeW5hbWljTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QsIHB1
YmxpYyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgeworY2xhc3MgRHluYW1pY05vZGVMaXN0IDog
cHVibGljIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB7CiBwdWJsaWM6CiAgICAgRHluYW1pY05v
ZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0
aW9uVHlwZSwgTm9kZUxpc3RSb290VHlwZSByb290VHlwZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25U
eXBlIGludmFsaWRhdGlvblR5cGUpCiAgICAgICAgIDogRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNl
KG93bmVyTm9kZS5nZXQoKSwgcm9vdFR5cGUsIGludmFsaWRhdGlvblR5cGUsIGNvbGxlY3Rpb25U
eXBlID09IENoaWxkTm9kZUxpc3RUeXBlLApAQCAtMTkwLDEyICsxODksOCBAQCBwdWJsaWM6CiAg
ICAgeyB9CiAgICAgdmlydHVhbCB+RHluYW1pY05vZGVMaXN0KCkgeyB9CiAKLSAgICAvLyBET00g
bWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE5vZGVMaXN0Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQg
b2Zmc2V0KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShj
b25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLQogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBw
YXJ0IG9mIERPTSkKKyAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVu
dCopIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3QuaAko
cmV2aXNpb24gMTM1NTMzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE5vZGVMaXN0CiAgICAgICAgIHZpcnR1YWwg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVtV2l0
aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgPSAwOwotICAgICAgICAKKyAgICAgICAg
dmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgPSAwOwor
CiAgICAgICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICAgICAgdmly
dHVhbCBib29sIGlzRHluYW1pY05vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5j
cHAJKHJldmlzaW9uIDEzNTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0
Tm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIE5vZGUqIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdDo6aXRlbSh1bnNpZ24KICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSog
U3RhdGljSGFzaFNldE5vZGVMaXN0OjppdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50SWQpIGNvbnN0CitOb2RlKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Om5hbWVkSXRlbShj
b25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKIHsKICAgICBMaXN0SGFzaFNldDxS
ZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX25vZGVzLmJlZ2luKCk7CiAgICAg
TGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbm9kZXMu
ZW5kKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5o
CShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY0hhc2hTZXROb2RlTGlzdChub2RlcykpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBO
b2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1X
aXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25l
ZCBpbmRleCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU3RhdGljSGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2Rl
cyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDEz
NTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgTm9kZSogU3RhdGljTm9kZUxpc3Q6Oml0ZW0odW5zaWdu
ZWQgaW5kZQogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBTdGF0aWNOb2RlTGlzdDo6aXRlbVdp
dGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAorTm9kZSogU3RhdGlj
Tm9kZUxpc3Q6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QK
IHsKICAgICBzaXplX3QgbGVuZ3RoID0gbV9ub2Rlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0YXRp
Y05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVM
aXN0LmgJKHJldmlzaW9uIDEzNTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2Rl
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljTm9kZUxpc3Qobm9kZXMp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAg
ICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOwor
ICAgICAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFN0YXRpY05vZGVM
aXN0KFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTM1NTM0KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSwxOCArMzY5LDE4
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBEeW5hbWljTm9kZUxpc3RDYWNoZUIKICAgICAgICAgQVNT
RVJUKCFlbGVtZW50c0FycmF5T2Zmc2V0KTsKIH0KIAotdW5zaWduZWQgRHluYW1pY05vZGVMaXN0
Q2FjaGVCYXNlOjpsZW5ndGhDb21tb24oKSBjb25zdAordW5zaWduZWQgRHluYW1pY05vZGVMaXN0
Q2FjaGVCYXNlOjpsZW5ndGgoKSBjb25zdAogewogICAgIGlmIChpc0xlbmd0aENhY2hlVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIGNhY2hlZExlbmd0aCgpOwogCi0gICAgaXRlbUNvbW1vbihVSU5U
X01BWCk7CisgICAgaXRlbShVSU5UX01BWCk7CiAgICAgQVNTRVJUKGlzTGVuZ3RoQ2FjaGVWYWxp
ZCgpKTsKICAgICAKICAgICByZXR1cm4gY2FjaGVkTGVuZ3RoKCk7CiB9CiAKLU5vZGUqIER5bmFt
aWNOb2RlTGlzdENhY2hlQmFzZTo6aXRlbUNvbW1vbih1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CitO
b2RlKiBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dAogewogICAgIGlmIChpc0l0ZW1DYWNoZVZhbGlkKCkgJiYgY2FjaGVkSXRlbU9mZnNldCgpID09
IG9mZnNldCkKICAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0oKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzNTUzNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTENvbGxlY3Rpb24gOiBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxIVE1MQ29sbGVjdGlvbj4sIHB1Ymxp
YyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgeworY2xhc3MgSFRNTENvbGxlY3Rpb24gOiBwdWJs
aWMgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsK
ICAgICB2aXJ0dWFsIH5IVE1MQ29sbGVjdGlvbigpOwogCiAgICAgLy8gRE9NIEFQSQotICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGxlbmd0aENvbW1vbigpOyB9Ci0gICAgTm9k
ZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGl0ZW1Db21tb24ob2Zmc2V0
KTsgfQogICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsK
IApAQCAtODEsNiArNzksOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tG
b3JOYW1lTWF0Y2goRWxlbWVudCosIGJvb2wgY2hlY2tOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIGlzRHluYW1pY05vZGVMaXN0KCkgY29u
c3QgT1ZFUlJJREUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHRydWU7IH0KKwogICAg
IHN0YXRpYyB2b2lkIGFwcGVuZChOb2RlQ2FjaGVNYXAmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBF
bGVtZW50Kik7CiAKICAgICBtdXRhYmxlIE5vZGVDYWNoZU1hcCBtX2lkQ2FjaGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175732</attachid>
            <date>2012-11-22 20:59:55 -0800</date>
            <delta_ts>2012-11-22 22:15:06 -0800</delta_ts>
            <desc>Fixed the typo: REGRESSIN</desc>
            <filename>bug-103096-20121122205740.patch</filename>
            <type>text/plain</type>
            <size>14186</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTExLTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEzNTQ5Myk6
IEhUTUxDb2xsZWN0aW9uIGFuZCBEeW5hbWljTm9kZUxpc3QgaGF2ZSB0d28gdnRhYmxlIHBvaW50
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMw
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBpbmhlcml0IGZyb20gTm9kZUxpc3QuIFdoaWxlIEhU
TUxDb2xsZWN0aW9uIGRvZXNuJ3QgaW5oZXJpdAorICAgICAgICBmcm9tIE5vZGVMaXN0IGluIElE
TCwgaXQgbWFrZXMgYSBsb3Qgb2Ygc2Vuc2UgZm9yIHRoZSBDKysgaW1wbGVtZW50YXRpb24gdG8g
ZG8gc28gdmlhCisgICAgICAgIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBzaW5jZSBIVE1MQ29s
bGVjdGlvbiBhbmQgbGl2ZSBOb2RlTGlzdCBzaGFyZSBhIGxvdCBvZiBjb2RlIGluCisgICAgICAg
IER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZS4KKworICAgICAgICBUaGlzIGxldHMgcmVtb3ZlIHBy
b3hpZXMgZm9yIGl0ZW0oKSBhbmQgbGVuZ3RoKCkgaW4gRHluYW1pY05vZGVMaXN0IGFuZCBIVE1M
Q29sbGVjdGlvbgorICAgICAgICBhbmQgZGlyZWN0bHkgaW1wbGVtZW50IHRoZW0gaW4gRHluYW1p
Y05vZGVMaXN0Q2FjaGVCYXNlIHdoaWNoIHVzZWQgdG8gcHJvdmlkZSBpdGVtQ29tbW9uKCkKKyAg
ICAgICAgYW5kIGxlbmd0aENvbW1vbigpLgorCisgICAgICAgIEFsc28gcmVuYW1lZCBOb2RlTGlz
dDo6aXRlbVdpdGhOYW1lKCkgdG8gTm9kZUxpc3Q6Om5hbWVkSXRlbSgpIHRvIG1hdGNoIEhUTUxD
b2xsZWN0aW9uJ3MKKyAgICAgICAgbmFtaW5nIGNvbnZlbnRpb24uCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxp
c3Q6OmNhbkdldEl0ZW1zRm9yTmFtZSk6IENhbGxzIG5hbWVkSXRlbSwgd2hpY2ggaGFzIGJlZW4g
cmVuYW1lZCBmcm9tCisgICAgICAgIGl0ZW1XaXRoTmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkpT
Tm9kZUxpc3Q6Om5hbWVHZXR0ZXIpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGVMaXN0Ojpu
YW1lZFByb3BlcnR5R2V0dGVyKTogRGl0dG8uCisgICAgICAgICogZG9tL0NoaWxkTm9kZUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlTGlzdDo6bm9kZU1hdGNoZXMpOiBVcGRh
dGVkIGNvbW1lbnQuCisgICAgICAgICogZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEeW5hbWljTm9kZUxpc3Q6Om5hbWVkSXRlbSk6IFJlbmFtZWQgZnJvbSBpdGVt
V2l0aE5hbWUuCisgICAgICAgICogZG9tL0R5bmFtaWNOb2RlTGlzdC5oOgorICAgICAgICAoRHlu
YW1pY05vZGVMaXN0Q2FjaGVCYXNlKTogSW5oZXJ0aXMgZnJvbSBOb2RlTGlzdCBhbmQgcmVuYW1l
ZCBsZW5ndGhDb21tb24gYW5kIGl0ZW1Db21tb24KKyAgICAgICAgdG8gdmlydHVhbCBsZW5ndGgg
YW5kIGl0ZW0gcmVzcGVjdGl2ZWx5LgorICAgICAgICAoRHluYW1pY05vZGVMaXN0KTogTm93IGlu
aGVyaXRzIGZyb20ganVzdCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgaW5zdGVhZCBvZiBOb2Rl
TGlzdAorICAgICAgICBhbmQgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHNpbmNlIHRoZSBmb3Jt
ZXIgbm93IGluaGVydGlzIGZyb20gTm9kZUxpc3QuIEFsc28gcmVtb3ZlZAorICAgICAgICBsZW5n
dGgoKSBhbmQgaXRlbSgpIHNpbmNlIHRoZXkncmUgaW1wbGVtZW50ZWQgaW4gRHluYW1pY05vZGVM
aXN0Q2FjaGVCYXNlIG5vdyBhbmQgcmVuYW1lZAorICAgICAgICBpdGVtV2l0aE5hbWUoKSB0byBu
YW1lZEl0ZW0oKSB0byBtYXRjaCBIVE1MQ29sbGVjdGlvbidzIG5hbWluZyBjb252ZW50aW9uLgor
ICAgICAgICAqIGRvbS9Ob2RlTGlzdC5oOgorICAgICAgICAoTm9kZUxpc3Q6Om5hbWVkSXRlbSk6
IFJlbmFtZWQgZnJvbSBpdGVtV2l0aE5hbWUuIE5vdGUgdGhhdCB0aGlzIG1lbWJlciBmdW5jdGlv
biBpcyBub3QKKyAgICAgICAgZXhwb3NlZCB2aWEgSURMLiBJdCdzIG1lcmVseSB1c2VkIGluIHRo
ZSBiaW5kaW5nIGNvZGUuCisgICAgICAgICogZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Om5hbWVkSXRlbSk6IERp
dHRvLgorICAgICAgICAqIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDoKKyAgICAgICAgKFN0
YXRpY0hhc2hTZXROb2RlTGlzdDo6bmFtZWRJdGVtKTogRGl0dG8uCisgICAgICAgICogZG9tL1N0
YXRpY05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY05vZGVMaXN0OjpuYW1l
ZEl0ZW0pOiBEaXR0by4KKyAgICAgICAgKiBkb20vU3RhdGljTm9kZUxpc3QuaDoKKyAgICAgICAg
KFN0YXRpY05vZGVMaXN0OjpuYW1lZEl0ZW0pOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxD
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFz
ZTo6bGVuZ3RoKTogUmVuYW1lZCBmcm9tIGxlbmd0aENvbW1vbi4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aXRlbSk6IFJlbmFtZWQgZnJvbSBpdGVtQ29tbW9u
LgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxDb2xsZWN0
aW9uKTogSW5oZXJpdHMgZnJvbSBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Ugc2luY2UgRHluYW1p
Y05vZGVMaXN0Q2FjaGVCYXNlCisgICAgICAgIGlzIGFscmVhZHkgUmVmQ291bnQnZWQgYW5kIE5v
ZGVMaXN0LCBmcm9tIHdoaWNoIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBpbmhlcml0cywKKyAg
ICAgICAgaW5oZXJpdHMgZnJvbSBTY3JpcHRXcmFwcGFibGUuCisKIDIwMTItMTEtMjIgIEpvaG4g
TWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6
IEltcHJvdmUgaGFuZGxpbmcgb2YgbmVzdGVkIGNvbW1lbnRzIG9uIHJlZGRpdC5jb20KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCShy
ZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTMgKzQ4LDEzIEBAIGJvb2wgSlNOb2Rl
TGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGEKIAogYm9vbCBKU05vZGVMaXN0OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFtZShwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+bmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCiBKU1ZhbHVl
IEpTTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTm9kZUxpc3QqIHRoaXNPYmog
PSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+aXRlbVdp
dGhOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKKyAgICBy
ZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgp
LT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAx
MzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Tm9kZUxpc3Q6Om5hbWVkUAogICAgIGlmIChrZXkgPT0gbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gdjhJbnRlZ2VyKGxpc3QtPmxlbmd0aCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAK
LSAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gbGlzdC0+aXRlbVdpdGhOYW1lKGtleSk7CisgICAg
UmVmUHRyPE5vZGU+IHJlc3VsdCA9IGxpc3QtPm5hbWVkSXRlbShrZXkpOwogICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZE5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NTMzKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIENo
aWxkTm9kZUxpc3Q6On5DaGlsZE5vZGVMaXN0KCkKIAogYm9vbCBDaGlsZE5vZGVMaXN0Ojpub2Rl
TWF0Y2hlcyhFbGVtZW50KiB0ZXN0Tm9kZSkgY29uc3QKIHsKLSAgICAvLyBUaGlzIGZ1bmN0aW9u
IHdpbGwgYmUgY2FsbGVkIG9ubHkgYnkgRHluYW1pY05vZGVMaXN0OjppdGVtV2l0aE5hbWUsCisg
ICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBvbmx5IGJ5IER5bmFtaWNOb2RlTGlz
dDo6bmFtZWRJdGVtLAogICAgIC8vIGZvciBhbiBlbGVtZW50IHRoYXQgd2FzIGxvY2F0ZWQgd2l0
aCBnZXRFbGVtZW50QnlJZC4KICAgICByZXR1cm4gdGVzdE5vZGUtPnBhcmVudE5vZGUoKSA9PSBy
b290Tm9kZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAJ
KHJldmlzaW9uIDEzNTUzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTcgKzEwMiw3IEBAIHZvaWQgRHluYW1pY1N1YnRy
ZWVOb2RlTGlzdDo6cmVwb3J0TWVtb3IKICAgICBEeW5hbWljTm9kZUxpc3Q6OnJlcG9ydE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogfQogCi11bnNpZ25lZCBEeW5hbWljTm9kZUxpc3Q6
Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGxlbmd0aENvbW1vbigpOwotfQotCi1Ob2Rl
KiBEeW5hbWljTm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdAotewotICAgIHJl
dHVybiBpdGVtQ29tbW9uKG9mZnNldCk7Ci19Ci0KLU5vZGUqIER5bmFtaWNOb2RlTGlzdDo6aXRl
bVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAorTm9kZSogRHlu
YW1pY05vZGVMaXN0OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNv
bnN0CiB7CiAgICAgTm9kZSogcm9vdE5vZGUgPSB0aGlzLT5yb290Tm9kZSgpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCShyZXZpc2lvbiAxMzU1MzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgZW51bSBOb2RlTGlzdFJvb3RUeXBlIHsKICAgICBOb2RlTGlzdElzUm9vdGVkQXRE
b2N1bWVudElmT3duZXJIYXNJdGVtcmVmQXR0ciwKIH07CiAKLWNsYXNzIER5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZSB7CitjbGFzcyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgOiBwdWJsaWMgTm9k
ZUxpc3QgewogcHVibGljOgogICAgIGVudW0gSXRlbUFmdGVyT3ZlcnJpZGVUeXBlIHsKICAgICAg
ICAgT3ZlcnJpZGVzSXRlbUFmdGVyLApAQCAtNjgsMTEgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKCFtX292ZXJyaWRlc0l0ZW1BZnRlciB8fCAhaXNOb2RlTGlzdChjb2xsZWN0aW9u
VHlwZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSgp
IHsgfQotCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAotcHVibGljOgorICAgIC8vIERPTSBBUEkKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNp
Z25lZCBvZmZzZXQpIGNvbnN0IE9WRVJSSURFOworCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhh
c0lkTmFtZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gIWlzTm9kZUxpc3QodHlwZSgpKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X3Jvb3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50IHx8IG1fcm9vdFR5cGUgPT0g
Tm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnRJZk93bmVySGFzSXRlbXJlZkF0dHI7IH0KICAgICBB
TFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlPihtX2lu
dmFsaWRhdGlvblR5cGUpOyB9CkBAIC0xMjMsOCArMTI0LDYgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaGFzTmFtZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc05hbWVDYWNoZVZhbGlkOyB9CiAg
ICAgdm9pZCBzZXRIYXNOYW1lQ2FjaGUoKSBjb25zdCB7IG1faXNOYW1lQ2FjaGVWYWxpZCA9IHRy
dWU7IH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aENvbW1vbigpIGNvbnN0OwotICAgIE5vZGUqIGl0
ZW1Db21tb24odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsKICAgICBOb2RlKiBpdGVtQmVmb3JlT3JB
ZnRlckNhY2hlZEl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsKICAgICBOb2RlKiBpdGVtQWZ0
ZXIodW5zaWduZWQmLCBOb2RlKiBwcmV2aW91c0l0ZW0pIGNvbnN0OwogCkBAIC0xODIsNyArMTgx
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIER5bmFtaWNOb2RlTGlzdENhY2hlQgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotY2xhc3MgRHluYW1pY05vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0LCBw
dWJsaWMgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHsKK2NsYXNzIER5bmFtaWNOb2RlTGlzdCA6
IHB1YmxpYyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgewogcHVibGljOgogICAgIER5bmFtaWNO
b2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG93bmVyTm9kZSwgQ29sbGVjdGlvblR5cGUgY29sbGVj
dGlvblR5cGUsIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGUsIE5vZGVMaXN0SW52YWxpZGF0aW9u
VHlwZSBpbnZhbGlkYXRpb25UeXBlKQogICAgICAgICA6IER5bmFtaWNOb2RlTGlzdENhY2hlQmFz
ZShvd25lck5vZGUuZ2V0KCksIHJvb3RUeXBlLCBpbnZhbGlkYXRpb25UeXBlLCBjb2xsZWN0aW9u
VHlwZSA9PSBDaGlsZE5vZGVMaXN0VHlwZSwKQEAgLTE5MCwxMiArMTg5LDggQEAgcHVibGljOgog
ICAgIHsgfQogICAgIHZpcnR1YWwgfkR5bmFtaWNOb2RlTGlzdCgpIHsgfQogCi0gICAgLy8gRE9N
IG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBOb2RlTGlzdAotICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtV2l0aE5hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0KICAgICAvLyBPdGhlciBtZXRob2RzIChub3Qg
cGFydCBvZiBET00pCisgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKEVsZW1l
bnQqKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmgJ
KHJldmlzaW9uIDEzNTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBOb2RlTGlzdAogICAgICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgTm9kZSogaXRlbVdp
dGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKLSAgICAgICAgCisgICAgICAg
IHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsK
KwogICAgICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0R5bmFtaWNOb2RlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwCShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBOb2RlKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3Q6Oml0ZW0odW5zaWduCiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUq
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYg
ZWxlbWVudElkKSBjb25zdAorTm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAgTGlzdEhhc2hTZXQ8
UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwogICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX25vZGVz
LmVuZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
aAkocmV2aXNpb24gMTM1NTMzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXRO
b2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qobm9kZXMpKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
Tm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVt
V2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9k
ZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAx
MzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIE5vZGUqIFN0YXRpY05vZGVMaXN0OjppdGVtKHVuc2ln
bmVkIGluZGUKICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogU3RhdGljTm9kZUxpc3Q6Oml0ZW1X
aXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK05vZGUqIFN0YXRp
Y05vZGVMaXN0OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0
CiB7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG1fbm9kZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0
aWNOb2RlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2Rl
TGlzdC5oCShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9k
ZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY05vZGVMaXN0KG5vZGVz
KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKKyAg
ICAgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBTdGF0aWNOb2Rl
TGlzdChWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzNTUzNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksMTggKzM2OSwx
OCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgRHluYW1pY05vZGVMaXN0Q2FjaGVCCiAgICAgICAgIEFT
U0VSVCghZWxlbWVudHNBcnJheU9mZnNldCk7CiB9CiAKLXVuc2lnbmVkIER5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6bGVuZ3RoQ29tbW9uKCkgY29uc3QKK3Vuc2lnbmVkIER5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoaXNMZW5ndGhDYWNoZVZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRMZW5ndGgoKTsKIAotICAgIGl0ZW1Db21tb24oVUlO
VF9NQVgpOworICAgIGl0ZW0oVUlOVF9NQVgpOwogICAgIEFTU0VSVChpc0xlbmd0aENhY2hlVmFs
aWQoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNhY2hlZExlbmd0aCgpOwogfQogCi1Ob2RlKiBEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZW1Db21tb24odW5zaWduZWQgb2Zmc2V0KSBjb25zdAor
Tm9kZSogRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29u
c3QKIHsKICAgICBpZiAoaXNJdGVtQ2FjaGVWYWxpZCgpICYmIGNhY2hlZEl0ZW1PZmZzZXQoKSA9
PSBvZmZzZXQpCiAgICAgICAgIHJldHVybiBjYWNoZWRJdGVtKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzU1MzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0ICszMywxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+LCBwdWJs
aWMgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHsKK2NsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVi
bGljIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7
CiAgICAgdmlydHVhbCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkKLSAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhDb21tb24oKTsgfQotICAgIE5v
ZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBpdGVtQ29tbW9uKG9mZnNl
dCk7IH0KICAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29uc3QgU3RyaW5nJik7
CiAKQEAgLTgxLDYgKzc5LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIGNoZWNr
Rm9yTmFtZU1hdGNoKEVsZW1lbnQqLCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNOb2RlTGlzdCgpIGNv
bnN0IE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiB0cnVlOyB9CisKICAg
ICBzdGF0aWMgdm9pZCBhcHBlbmQoTm9kZUNhY2hlTWFwJiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
RWxlbWVudCopOwogCiAgICAgbXV0YWJsZSBOb2RlQ2FjaGVNYXAgbV9pZENhY2hlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175736</attachid>
            <date>2012-11-22 22:15:13 -0800</date>
            <delta_ts>2012-11-23 18:13:33 -0800</delta_ts>
            <desc>rniwa&apos;s patch with chromium compilation fix and native memory instrumentation fix</desc>
            <filename>bug-103096-20121123101256.patch</filename>
            <type>text/plain</type>
            <size>17036</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJiOWI2MzA2MTUxZDQx
YmIwZmE5Y2JmNzY2Y2RkMmQxMzg1YjA3ZC4uOTAzNWJhN2ZjMjBlMzhlNjMwYTlkZGUzNDg2ZWU4
MjEyOWFkOGViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTExLTIyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEzNTQ5
Myk6IEhUTUxDb2xsZWN0aW9uIGFuZCBEeW5hbWljTm9kZUxpc3QgaGF2ZSB0d28gdnRhYmxlIHBv
aW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDMwOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBpbmhlcml0IGZyb20gTm9kZUxpc3QuIFdoaWxl
IEhUTUxDb2xsZWN0aW9uIGRvZXNuJ3QgaW5oZXJpdAorICAgICAgICBmcm9tIE5vZGVMaXN0IGlu
IElETCwgaXQgbWFrZXMgYSBsb3Qgb2Ygc2Vuc2UgZm9yIHRoZSBDKysgaW1wbGVtZW50YXRpb24g
dG8gZG8gc28gdmlhCisgICAgICAgIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBzaW5jZSBIVE1M
Q29sbGVjdGlvbiBhbmQgbGl2ZSBOb2RlTGlzdCBzaGFyZSBhIGxvdCBvZiBjb2RlIGluCisgICAg
ICAgIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZS4KKworICAgICAgICBUaGlzIGxldHMgcmVtb3Zl
IHByb3hpZXMgZm9yIGl0ZW0oKSBhbmQgbGVuZ3RoKCkgaW4gRHluYW1pY05vZGVMaXN0IGFuZCBI
VE1MQ29sbGVjdGlvbgorICAgICAgICBhbmQgZGlyZWN0bHkgaW1wbGVtZW50IHRoZW0gaW4gRHlu
YW1pY05vZGVMaXN0Q2FjaGVCYXNlIHdoaWNoIHVzZWQgdG8gcHJvdmlkZSBpdGVtQ29tbW9uKCkK
KyAgICAgICAgYW5kIGxlbmd0aENvbW1vbigpLgorCisgICAgICAgIEFsc28gcmVuYW1lZCBOb2Rl
TGlzdDo6aXRlbVdpdGhOYW1lKCkgdG8gTm9kZUxpc3Q6Om5hbWVkSXRlbSgpIHRvIG1hdGNoIEhU
TUxDb2xsZWN0aW9uJ3MKKyAgICAgICAgbmFtaW5nIGNvbnZlbnRpb24uCisKKyAgICAgICAgVW5u
ZWNlc3NhcnkgcmVwb3J0TWVtb3J5VXNhZ2UgbWV0aG9kcyB3ZXJlIHJlbW92ZWQgZnJvbSBEeW5h
bWljTm9kZUxpc3QgYW5kIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxp
c3Q6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0Ojpu
YW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29s
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5hbWVkTm9kZXNDb2xsZWN0aW9uOjpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXNDb2xs
ZWN0aW9uLmg6CisgICAgICAgIChWOE5hbWVkTm9kZXNDb2xsZWN0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOE5vZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBkb20vQ2hpbGRO
b2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVMaXN0Ojpub2RlTWF0Y2hl
cyk6CisgICAgICAgICogZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBkb20vRHlu
YW1pY05vZGVMaXN0Lmg6CisgICAgICAgIChEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UpOgorICAg
ICAgICAoRHluYW1pY05vZGVMaXN0KToKKyAgICAgICAgKiBkb20vTm9kZUxpc3QuaDoKKyAgICAg
ICAgKE5vZGVMaXN0KToKKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0hhc2hTZXROb2RlTGlzdDo6bmFtZWRJdGVtKToKKyAg
ICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg6CisgICAgICAgIChTdGF0aWNIYXNo
U2V0Tm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdGF0aWNOb2RlTGlzdDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBkb20vU3Rh
dGljTm9kZUxpc3QuaDoKKyAgICAgICAgKFN0YXRpY05vZGVMaXN0KToKKyAgICAgICAgKiBodG1s
L0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENh
Y2hlQmFzZTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENhY2hl
QmFzZTo6aXRlbSk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAo
SFRNTENvbGxlY3Rpb24pOgorCiAyMDEyLTExLTIyICBSYWZhZWwgQnJhbmRhbyAgPHJhZmFlbC5s
b2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFBMQVRGT1JNKEhBSUtVKSBsZWZ0
b3ZlcnMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3Vz
dG9tLmNwcAppbmRleCA3NDE2MTU5NzAxOGZhNTAzN2Y5Y2IxNTE3Y2I0ZTlhMjJjMzI2MzFmLi5j
ODNhNDY1M2UxYzE0MzQ0ZDQ3ZjRmMjMzNDhhZWQxOWQ5Y2I0MDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNDgsMTMgKzQ4LDEz
IEBAIGJvb2wgSlNOb2RlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiAKIGJvb2wgSlNOb2RlTGlzdDo6Y2FuR2V0SXRl
bXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5vZGVMaXN0KiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBpbXBsLT5pdGVtV2l0aE5hbWUocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAogSlNWYWx1ZSBK
U05vZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05vZGVMaXN0KiB0aGlzT2JqID0g
anNDYXN0PEpTTm9kZUxpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pT
KGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRo
TmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0
dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+
bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwCmluZGV4IGQ5
ZGExNzRiNjE3MjBlMmM5ZTA3NzJlNmQ3NTVjZjkxNWMwNDI4YTYuLjNjNTBkYmEzNWI2ZjAyMjgz
NDhlOTAxNWRhMzRlZTBkODNhMGQ2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAKQEAgLTQy
LDcgKzQyLDcgQEAgTm9kZSogVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogVjhOYW1lZE5vZGVzQ29sbGVj
dGlvbjo6aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CitOb2RlKiBW
OE5hbWVkTm9kZXNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBpZCkg
Y29uc3QKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2Rlcy5zaXplKCk7ICsr
aSkgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2Rlc1tpXS5nZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXNDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVj
dGlvbi5oCmluZGV4IDAzNzJkZTE1NDM5ZDgxNjc0Y2NhYmFhZDA2NTg2MGVhMTAxY2NkN2YuLmEz
YzUzM2RjYjM5MjIyZDZhM2ZhMDIzN2Q0ZmQ3NGQ3YzExYmMxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rlc0NvbGxlY3Rp
b24uaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmly
dHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX25vZGVzLnNpemUoKTsgfQog
ICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQpIGNvbnN0OwotICAgICAgICB2aXJ0
dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBWOE5hbWVkTm9kZXNDb2xsZWN0aW9uKGNv
bnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXggZThiNzA0
YzdhZWVlZDEzZDk0ODdlMTc5MTFhYzdmZjhjY2UwZDY3Ni4uM2ZjMjU4YjQ2MzY3YTQzMjIwNGU4
NjhiNDRlZWVmMWI5M2U0YTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlTGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZQogICAgIGlmIChrZXkgPT0gbGVuZ3RoKQogICAgICAgICByZXR1
cm4gdjhJbnRlZ2VyKGxpc3QtPmxlbmd0aCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKLSAgICBS
ZWZQdHI8Tm9kZT4gcmVzdWx0ID0gbGlzdC0+aXRlbVdpdGhOYW1lKGtleSk7CisgICAgUmVmUHRy
PE5vZGU+IHJlc3VsdCA9IGxpc3QtPm5hbWVkSXRlbShrZXkpOwogICAgIGlmICghcmVzdWx0KQog
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxp
c3QuY3BwCmluZGV4IGZlNTU4OTJiMjBmMzJkZDUxNjcyNGVmNzM3MTgwMzkxNGQ0NGFjZmIuLjQ1
MTcyOGJjNDY2NmEyMmMyOTgxNTJmMDMzYzM3ZDQ2ZjEzMjNmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGROb2RlTGlzdC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgQ2hpbGROb2RlTGlzdDo6fkNoaWxk
Tm9kZUxpc3QoKQogCiBib29sIENoaWxkTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQqIHRl
c3ROb2RlKSBjb25zdAogewotICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25s
eSBieSBEeW5hbWljTm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZSwKKyAgICAvLyBUaGlzIGZ1bmN0aW9u
IHdpbGwgYmUgY2FsbGVkIG9ubHkgYnkgRHluYW1pY05vZGVMaXN0OjpuYW1lZEl0ZW0sCiAgICAg
Ly8gZm9yIGFuIGVsZW1lbnQgdGhhdCB3YXMgbG9jYXRlZCB3aXRoIGdldEVsZW1lbnRCeUlkLgog
ICAgIHJldHVybiB0ZXN0Tm9kZS0+cGFyZW50Tm9kZSgpID09IHJvb3ROb2RlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCmluZGV4IDZiZGM3MWRhN2RiZWUxYWU3ZTZk
M2RmODBhYjAzYzAzMmIzOTE2NDguLjBkMzhiMDVmM2IwMjAzNDQ0NWNjMDFhODkxMzBmMTA5YzIy
NzI1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCkBAIC04NSwzNCAr
ODUsMTIgQEAgdm9pZCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdGVJZE5hbWVD
YWNoZU1hcHMoKSBjb25zdAogdm9pZCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OnJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAg
ICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1l
bW9yeVR5cGVzOjpET00pOworICAgIE5vZGVMaXN0OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX293bmVyTm9kZSk7CiAgICAgaW5mby5h
ZGRXZWFrUG9pbnRlcihtX2NhY2hlZEl0ZW0pOwogfQogCi12b2lkIER5bmFtaWNOb2RlTGlzdDo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBX
ZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgTm9kZUxpc3Q6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwotICAgIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6cmVwb3J0
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci19Ci0KLXZvaWQgRHluYW1pY1N1YnRyZWVO
b2RlTGlzdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgRHluYW1pY05vZGVMaXN0Ojpy
ZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLX0KLQotdW5zaWduZWQgRHluYW1p
Y05vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBsZW5ndGhDb21tb24oKTsK
LX0KLQotTm9kZSogRHluYW1pY05vZGVMaXN0OjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QK
LXsKLSAgICByZXR1cm4gaXRlbUNvbW1vbihvZmZzZXQpOwotfQotCi1Ob2RlKiBEeW5hbWljTm9k
ZUxpc3Q6Oml0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QK
K05vZGUqIER5bmFtaWNOb2RlTGlzdDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgZWxl
bWVudElkKSBjb25zdAogewogICAgIE5vZGUqIHJvb3ROb2RlID0gdGhpcy0+cm9vdE5vZGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCmluZGV4IDUwYWE2NDE5ODA5NWQ3YjU5
YWRhM2Y4YWYzN2Q3MTBhMjM4NjIzMTcuLjIxYjg0YzY5ZjVlMTdmY2U5MDdiZmVkOTEyMjZmZGMy
ZTFjNWVkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgKQEAgLTQxLDcgKzQx
LDcgQEAgZW51bSBOb2RlTGlzdFJvb3RUeXBlIHsKICAgICBOb2RlTGlzdElzUm9vdGVkQXREb2N1
bWVudElmT3duZXJIYXNJdGVtcmVmQXR0ciwKIH07CiAKLWNsYXNzIER5bmFtaWNOb2RlTGlzdENh
Y2hlQmFzZSB7CitjbGFzcyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgOiBwdWJsaWMgTm9kZUxp
c3QgewogcHVibGljOgogICAgIGVudW0gSXRlbUFmdGVyT3ZlcnJpZGVUeXBlIHsKICAgICAgICAg
T3ZlcnJpZGVzSXRlbUFmdGVyLApAQCAtNjgsMTEgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKCFtX292ZXJyaWRlc0l0ZW1BZnRlciB8fCAhaXNOb2RlTGlzdChjb2xsZWN0aW9uVHlw
ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSgpIHsg
fQotCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKIAotcHVibGljOgorICAgIC8vIERPTSBBUEkKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25l
ZCBvZmZzZXQpIGNvbnN0IE9WRVJSSURFOworCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc0lk
TmFtZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gIWlzTm9kZUxpc3QodHlwZSgpKTsgfQogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50IHx8IG1fcm9vdFR5cGUgPT0gTm9k
ZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnRJZk93bmVySGFzSXRlbXJlZkF0dHI7IH0KICAgICBBTFdB
WVNfSU5MSU5FIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlPihtX2ludmFs
aWRhdGlvblR5cGUpOyB9CkBAIC0xMjMsOCArMTI0LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
aGFzTmFtZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc05hbWVDYWNoZVZhbGlkOyB9CiAgICAg
dm9pZCBzZXRIYXNOYW1lQ2FjaGUoKSBjb25zdCB7IG1faXNOYW1lQ2FjaGVWYWxpZCA9IHRydWU7
IH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aENvbW1vbigpIGNvbnN0OwotICAgIE5vZGUqIGl0ZW1D
b21tb24odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsKICAgICBOb2RlKiBpdGVtQmVmb3JlT3JBZnRl
ckNhY2hlZEl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsKICAgICBOb2RlKiBpdGVtQWZ0ZXIo
dW5zaWduZWQmLCBOb2RlKiBwcmV2aW91c0l0ZW0pIGNvbnN0OwogCkBAIC0xODIsNyArMTgxLDcg
QEAgQUxXQVlTX0lOTElORSBib29sIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6c2hvdWxkSW52
YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWNsYXNz
IER5bmFtaWNOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCwgcHVibGljIER5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZSB7CitjbGFzcyBEeW5hbWljTm9kZUxpc3QgOiBwdWJsaWMgRHluYW1pY05vZGVM
aXN0Q2FjaGVCYXNlIHsKIHB1YmxpYzoKICAgICBEeW5hbWljTm9kZUxpc3QoUGFzc1JlZlB0cjxO
b2RlPiBvd25lck5vZGUsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlLCBOb2RlTGlzdFJv
b3RUeXBlIHJvb3RUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlw
ZSkKICAgICAgICAgOiBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Uob3duZXJOb2RlLmdldCgpLCBy
b290VHlwZSwgaW52YWxpZGF0aW9uVHlwZSwgY29sbGVjdGlvblR5cGUgPT0gQ2hpbGROb2RlTGlz
dFR5cGUsCkBAIC0xOTAsMTYgKzE4OSwxMCBAQCBwdWJsaWM6CiAgICAgeyB9CiAgICAgdmlydHVh
bCB+RHluYW1pY05vZGVMaXN0KCkgeyB9CiAKLSAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0
ZXMgZm9yIE5vZGVMaXN0Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKLQogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKKyAgICB2
aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNvbnN0ID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3QgT1ZFUlJJREU7Ci0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY05vZGVM
aXN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTIxMSw4ICsyMDQs
NiBAQCBwdWJsaWM6CiAgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJOb2RlTGlzdENhY2hl
KHRoaXMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7Ci0KIHByb3RlY3RlZDoKICAgICBEeW5hbWlj
U3VidHJlZU5vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgQ29sbGVjdGlvblR5cGUgdHlw
ZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUsIE5vZGVMaXN0Um9v
dFR5cGUgcm9vdFR5cGUgPSBOb2RlTGlzdElzUm9vdGVkQXROb2RlKQogICAgICAgICA6IER5bmFt
aWNOb2RlTGlzdChub2RlLCB0eXBlLCByb290VHlwZSwgaW52YWxpZGF0aW9uVHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVMaXN0LmgKaW5kZXggZjBhYTYzMWE1NTUyNGRmMmQyNGQzZmFlMDNmMjdmNzg2M2E2MDNh
MC4uYzQzNDAyZTAyMzk3ODdjMWU2OTljMDIyMTc5YTdhN2E4YWQ3ZWFjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVMaXN0LmgKQEAgLTM5LDggKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE5vZGVMaXN0CiAgICAgICAgIHZpcnR1YWwg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVtV2l0
aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgPSAwOwotICAgICAgICAKKyAgICAgICAg
dmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgPSAwOwor
CiAgICAgICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICAgICAgdmly
dHVhbCBib29sIGlzRHluYW1pY05vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAppbmRl
eCAzZDZiNWMzOGY2ZjkwMzM5MzA0OWI5NDQ4NjJkZGYxNTkwZDBmZGY3Li5hZDRhOWE0YTc4NWE4
MTIxYzUxY2QxMjI0MjVkZDliODBiODk0ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBOb2RlKiBTdGF0aWNIYXNo
U2V0Tm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9
CiAKLU5vZGUqIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgZWxlbWVudElkKSBjb25zdAorTm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0Ojpu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAgTGlz
dEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdp
bigpOwogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX25vZGVzLmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hh
c2hTZXROb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlz
dC5oCmluZGV4IGNiMTA5M2ZhZGU4MmE3YWM0Y2Y1MzI2MGNiOWNlMDFkNmQ1ODNjMjAuLjRkMDZj
MGUxNjUzYzM3NjlhMzI3ZGU3YjRjYjU0ZDZlZGJiNTZmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY0hhc2hTZXROb2RlTGlzdChub2RlcykpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0
ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNp
Z25lZCBpbmRleCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgU3RhdGljSGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBu
b2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcAppbmRleCA0MTJjMTI1ZTBj
YjU5NmFiMzU1ZTRmOGNjNjgxOWQ0YmQ3NDA4ZTY0Li4yY2E5MDExZmI4MDY1ODIzOTIwNDllMTAy
OTYyNTAwZjA3MTQ5ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9k
ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgTm9kZSogU3RhdGljTm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUqIFN0YXRpY05vZGVMaXN0OjppdGVtV2l0
aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CitOb2RlKiBTdGF0aWNO
b2RlTGlzdDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAog
ewogICAgIHNpemVfdCBsZW5ndGggPSBtX25vZGVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3RhdGljTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oCmlu
ZGV4IDdkM2ZiZjViMGRhOTA0ZjZkYWYxNmNhMmMwOTY5NTc0OTM4MWIxMDUuLjUzMjBjZTUyYmUx
Mjg4ZTZmYjkwMTFmOTNjMzdiNTlmMGEwNjk5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdGF0aWNOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2Rl
TGlzdC5oCkBAIC00Niw5ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljTm9kZUxpc3Qobm9kZXMpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgTm9k
ZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIE5v
ZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFN0YXRpY05vZGVMaXN0KFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiYgbm9kZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmlu
ZGV4IGRhMmE0YmZjYWUwZmFmNDRlYjdkZjk3MTY2NjMwZDkxNWJkNTJiMzguLjZmMThkZjUwOGE4
YmE3MjJhNzUxM2YwNjQ1NWQzMWI2MGM5NzBhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCkBAIC0zNjksMTggKzM2OSwxOCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgRHlu
YW1pY05vZGVMaXN0Q2FjaGVCYXNlOjpzZXRJdGVtQ2FjaGUoTm9kZSogaXRlbSwgdW5zaWduZWQg
bwogICAgICAgICBBU1NFUlQoIWVsZW1lbnRzQXJyYXlPZmZzZXQpOwogfQogCi11bnNpZ25lZCBE
eW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6Omxlbmd0aENvbW1vbigpIGNvbnN0Cit1bnNpZ25lZCBE
eW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGVu
Z3RoQ2FjaGVWYWxpZCgpKQogICAgICAgICByZXR1cm4gY2FjaGVkTGVuZ3RoKCk7CiAKLSAgICBp
dGVtQ29tbW9uKFVJTlRfTUFYKTsKKyAgICBpdGVtKFVJTlRfTUFYKTsKICAgICBBU1NFUlQoaXNM
ZW5ndGhDYWNoZVZhbGlkKCkpOwogICAgIAogICAgIHJldHVybiBjYWNoZWRMZW5ndGgoKTsKIH0K
IAotTm9kZSogRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppdGVtQ29tbW9uKHVuc2lnbmVkIG9m
ZnNldCkgY29uc3QKK05vZGUqIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aXRlbSh1bnNpZ25l
ZCBvZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKGlzSXRlbUNhY2hlVmFsaWQoKSAmJiBjYWNoZWRJ
dGVtT2Zmc2V0KCkgPT0gb2Zmc2V0KQogICAgICAgICByZXR1cm4gY2FjaGVkSXRlbSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IDk4ZjM2MWZlOTA4N2E4M2EyNDdlNTQ2
NzJjOWU5NWVhZGFlODFkNTkuLjEyNjRmYWQ5MjA3MTkzYWYxYmRkYmQxNzZkOGRlMDVkMGY0OTVh
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTMzLDE0ICszMywxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+LCBwdWJs
aWMgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHsKK2NsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVi
bGljIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7
CiAgICAgdmlydHVhbCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkKLSAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhDb21tb24oKTsgfQotICAgIE5v
ZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBpdGVtQ29tbW9uKG9mZnNl
dCk7IH0KICAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29uc3QgU3RyaW5nJik7
CiAKQEAgLTgxLDYgKzc5LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIGNoZWNr
Rm9yTmFtZU1hdGNoKEVsZW1lbnQqLCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNOb2RlTGlzdCgpIGNv
bnN0IE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiB0cnVlOyB9CisKICAg
ICBzdGF0aWMgdm9pZCBhcHBlbmQoTm9kZUNhY2hlTWFwJiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
RWxlbWVudCopOwogCiAgICAgbXV0YWJsZSBOb2RlQ2FjaGVNYXAgbV9pZENhY2hlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175842</attachid>
            <date>2012-11-23 18:13:36 -0800</date>
            <delta_ts>2012-11-24 23:22:22 -0800</delta_ts>
            <desc>Put back inline comments</desc>
            <filename>bug-103096-20121123181122.patch</filename>
            <type>text/plain</type>
            <size>17321</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDEyLTExLTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEzNTQ5Myk6
IEhUTUxDb2xsZWN0aW9uIGFuZCBEeW5hbWljTm9kZUxpc3QgaGF2ZSB0d28gdnRhYmxlIHBvaW50
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMw
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDby1h
dXRob3JlZCBieSBJbHlhIFRpa2hvbm92c2t5LgorCisgICAgICAgIE1hZGUgRHluYW1pY05vZGVM
aXN0Q2FjaGVCYXNlIGluaGVyaXQgZnJvbSBOb2RlTGlzdC4gV2hpbGUgSFRNTENvbGxlY3Rpb24g
ZG9lc24ndCBpbmhlcml0CisgICAgICAgIGZyb20gTm9kZUxpc3QgaW4gSURMLCBpdCBtYWtlcyBh
IGxvdCBvZiBzZW5zZSBmb3IgdGhlIEMrKyBpbXBsZW1lbnRhdGlvbiB0byBkbyBzbyB2aWEKKyAg
ICAgICAgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHNpbmNlIEhUTUxDb2xsZWN0aW9uIGFuZCBs
aXZlIE5vZGVMaXN0IHNoYXJlIGEgbG90IG9mIGNvZGUgaW4KKyAgICAgICAgRHluYW1pY05vZGVM
aXN0Q2FjaGVCYXNlLgorCisgICAgICAgIFRoaXMgbGV0cyByZW1vdmUgcHJveGllcyBmb3IgaXRl
bSgpIGFuZCBsZW5ndGgoKSBpbiBEeW5hbWljTm9kZUxpc3QgYW5kIEhUTUxDb2xsZWN0aW9uCisg
ICAgICAgIGFuZCBkaXJlY3RseSBpbXBsZW1lbnQgdGhlbSBpbiBEeW5hbWljTm9kZUxpc3RDYWNo
ZUJhc2Ugd2hpY2ggdXNlZCB0byBwcm92aWRlIGl0ZW1Db21tb24oKQorICAgICAgICBhbmQgbGVu
Z3RoQ29tbW9uKCkuCisKKyAgICAgICAgQWxzbyByZW5hbWVkIE5vZGVMaXN0OjppdGVtV2l0aE5h
bWUoKSB0byBOb2RlTGlzdDo6bmFtZWRJdGVtKCkgdG8gbWF0Y2ggSFRNTENvbGxlY3Rpb24ncwor
ICAgICAgICBuYW1pbmcgY29udmVudGlvbi4KKworICAgICAgICBGaW5hbGx5LCByZW1vdmVkIHJl
cG9ydE1lbW9yeVVzYWdlIGluIER5bmFtaWNOb2RlTGlzdDo6cmVwb3J0TWVtb3J5VXNhZ2Ugc2lu
Y2UgRHluYW1pY05vZGVMaXN0CisgICAgICAgIG5vdyB1c2VzIHNpbmdsZSBpbmhlcml0YW5jZS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlTGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKTogQ2FsbHMgbmFtZWRJdGVt
LCB3aGljaCBoYXMgYmVlbiByZW5hbWVkIGZyb20KKyAgICAgICAgaXRlbVdpdGhOYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6SlNOb2RlTGlzdDo6bmFtZUdldHRlcik6IERpdHRvLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4Tm9kZUxpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOiBEaXR0by4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOE5hbWVkTm9kZXNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOiBSZW5hbWVkIGZyb20g
aXRlbVdpdGhOYW1lLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXND
b2xsZWN0aW9uLmg6CisgICAgICAgICogZG9tL0NoaWxkTm9kZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlTGlzdDo6bm9kZU1hdGNoZXMpOiBVcGRhdGVkIGNvbW1lbnQuCisg
ICAgICAgICogZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljTm9kZUxpc3Q6Om5hbWVkSXRlbSk6IFJlbmFtZWQgZnJvbSBpdGVtV2l0aE5hbWUuCisgICAg
ICAgICogZG9tL0R5bmFtaWNOb2RlTGlzdC5oOgorICAgICAgICAoRHluYW1pY05vZGVMaXN0Q2Fj
aGVCYXNlKTogSW5oZXJ0aXMgZnJvbSBOb2RlTGlzdCBhbmQgcmVuYW1lZCBsZW5ndGhDb21tb24g
YW5kIGl0ZW1Db21tb24KKyAgICAgICAgdG8gdmlydHVhbCBsZW5ndGggYW5kIGl0ZW0gcmVzcGVj
dGl2ZWx5LgorICAgICAgICAoRHluYW1pY05vZGVMaXN0KTogTm93IGluaGVyaXRzIGZyb20ganVz
dCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgaW5zdGVhZCBvZiBOb2RlTGlzdAorICAgICAgICBh
bmQgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHNpbmNlIHRoZSBmb3JtZXIgbm93IGluaGVydGlz
IGZyb20gTm9kZUxpc3QuIEFsc28gcmVtb3ZlZAorICAgICAgICBsZW5ndGgoKSBhbmQgaXRlbSgp
IHNpbmNlIHRoZXkncmUgaW1wbGVtZW50ZWQgaW4gRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIG5v
dyBhbmQgcmVuYW1lZAorICAgICAgICBpdGVtV2l0aE5hbWUoKSB0byBuYW1lZEl0ZW0oKSB0byBt
YXRjaCBIVE1MQ29sbGVjdGlvbidzIG5hbWluZyBjb252ZW50aW9uLgorICAgICAgICAqIGRvbS9O
b2RlTGlzdC5oOgorICAgICAgICAoTm9kZUxpc3Q6Om5hbWVkSXRlbSk6IFJlbmFtZWQgZnJvbSBp
dGVtV2l0aE5hbWUuIE5vdGUgdGhhdCB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBub3QKKyAgICAg
ICAgZXhwb3NlZCB2aWEgSURMLiBJdCdzIG1lcmVseSB1c2VkIGluIHRoZSBiaW5kaW5nIGNvZGUu
CisgICAgICAgICogZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Om5hbWVkSXRlbSk6IERpdHRvLgorICAgICAgICAq
IGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDoKKyAgICAgICAgKFN0YXRpY0hhc2hTZXROb2Rl
TGlzdDo6bmFtZWRJdGVtKTogRGl0dG8uCisgICAgICAgICogZG9tL1N0YXRpY05vZGVMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY05vZGVMaXN0OjpuYW1lZEl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKiBkb20vU3RhdGljTm9kZUxpc3QuaDoKKyAgICAgICAgKFN0YXRpY05vZGVMaXN0
OjpuYW1lZEl0ZW0pOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6bGVuZ3RoKTogUmVu
YW1lZCBmcm9tIGxlbmd0aENvbW1vbi4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6aXRlbSk6IFJlbmFtZWQgZnJvbSBpdGVtQ29tbW9uLgorICAgICAgICAqIGh0
bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxDb2xsZWN0aW9uKTogSW5oZXJpdHMg
ZnJvbSBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Ugc2luY2UgRHluYW1pY05vZGVMaXN0Q2FjaGVC
YXNlCisgICAgICAgIGlzIGFscmVhZHkgUmVmQ291bnQnZWQgYW5kIE5vZGVMaXN0LCBmcm9tIHdo
aWNoIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSBpbmhlcml0cywKKyAgICAgICAgaW5oZXJpdHMg
ZnJvbSBTY3JpcHRXcmFwcGFibGUuCisKIDIwMTItMTEtMjIgIEpvaG4gTWVsbG9yICA8am9obm1l
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEltcHJvdmUgaGFuZGxp
bmcgb2YgbmVzdGVkIGNvbW1lbnRzIG9uIHJlZGRpdC5jb20KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAxMzU1MzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsMTMgKzQ4LDEzIEBAIGJvb2wgSlNOb2RlTGlzdE93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGEKIAogYm9vbCBKU05vZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhl
Y1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCiBKU1ZhbHVlIEpTTm9kZUxpc3Q6Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIEpTTm9kZUxpc3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOb2Rl
TGlzdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+aXRlbVdpdGhOYW1lKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKKyAgICByZXR1cm4gdG9KUyhleGVj
LCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhO
YW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMzU1
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29s
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgTm9kZSogVjhOYW1l
ZE5vZGVzQ29sbGVjdGlvbjo6aXRlbSh1bnNpZwogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBW
OE5hbWVkTm9kZXNDb2xsZWN0aW9uOjppdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkgY29uc3QKK05vZGUqIFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X25vZGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGVzW2ldLmdl
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rl
c0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhOYW1lZE5vZGVzQ29sbGVjdGlvbihub2Rlcykp
OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX25vZGVzLnNpemUoKTsgfQotICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5z
aWduZWQpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX25vZGVzLnNpemUoKTsgfQorICAgICAgICB2aXJ0dWFs
IE5vZGUqIGl0ZW0odW5zaWduZWQpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIE5v
ZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFY4TmFtZWROb2Rlc0NvbGxlY3Rpb24oY29uc3Qg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBub2RlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9u
IDEzNTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhOb2RlTGlzdDo6bmFtZWRQCiAgICAgaWYgKGtleSA9PSBsZW5ndGgpCiAgICAg
ICAgIHJldHVybiB2OEludGVnZXIobGlzdC0+bGVuZ3RoKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IAotICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBsaXN0LT5pdGVtV2l0aE5hbWUoa2V5KTsKKyAg
ICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gbGlzdC0+bmFtZWRJdGVtKGtleSk7CiAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
Q2hpbGROb2RlTGlzdDo6fkNoaWxkTm9kZUxpc3QoKQogCiBib29sIENoaWxkTm9kZUxpc3Q6Om5v
ZGVNYXRjaGVzKEVsZW1lbnQqIHRlc3ROb2RlKSBjb25zdAogewotICAgIC8vIFRoaXMgZnVuY3Rp
b24gd2lsbCBiZSBjYWxsZWQgb25seSBieSBEeW5hbWljTm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZSwK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgYnkgRHluYW1pY05vZGVM
aXN0OjpuYW1lZEl0ZW0sCiAgICAgLy8gZm9yIGFuIGVsZW1lbnQgdGhhdCB3YXMgbG9jYXRlZCB3
aXRoIGdldEVsZW1lbnRCeUlkLgogICAgIHJldHVybiB0ZXN0Tm9kZS0+cGFyZW50Tm9kZSgpID09
IHJvb3ROb2RlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNw
cAkocmV2aXNpb24gMTM1NTM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDM0ICs4NSwxMiBAQCB2b2lkIER5bmFtaWNOb2Rl
TGlzdENhY2hlQmFzZTo6aW52YWxpZGF0CiB2b2lkIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBX
ZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CisgICAgTm9kZUxpc3Q6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fb3duZXJOb2RlKTsKICAg
ICBpbmZvLmFkZFdlYWtQb2ludGVyKG1fY2FjaGVkSXRlbSk7CiB9CiAKLXZvaWQgRHluYW1pY05v
ZGVMaXN0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICBOb2RlTGlzdDo6cmVwb3J0TWVt
b3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNl
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLX0KLQotdm9pZCBEeW5hbWlj
U3VidHJlZU5vZGVMaXN0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICBEeW5hbWljTm9k
ZUxpc3Q6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotfQotCi11bnNpZ25l
ZCBEeW5hbWljTm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGxlbmd0aENv
bW1vbigpOwotfQotCi1Ob2RlKiBEeW5hbWljTm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQgb2Zmc2V0
KSBjb25zdAotewotICAgIHJldHVybiBpdGVtQ29tbW9uKG9mZnNldCk7Ci19Ci0KLU5vZGUqIER5
bmFtaWNOb2RlTGlzdDo6aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElk
KSBjb25zdAorTm9kZSogRHluYW1pY05vZGVMaXN0OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAgTm9kZSogcm9vdE5vZGUgPSB0aGlzLT5yb290
Tm9kZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCShyZXZpc2lv
biAxMzU1MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgZW51bSBOb2RlTGlzdFJvb3RUeXBlIHsKICAgICBO
b2RlTGlzdElzUm9vdGVkQXREb2N1bWVudElmT3duZXJIYXNJdGVtcmVmQXR0ciwKIH07CiAKLWNs
YXNzIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB7CitjbGFzcyBEeW5hbWljTm9kZUxpc3RDYWNo
ZUJhc2UgOiBwdWJsaWMgTm9kZUxpc3QgewogcHVibGljOgogICAgIGVudW0gSXRlbUFmdGVyT3Zl
cnJpZGVUeXBlIHsKICAgICAgICAgT3ZlcnJpZGVzSXRlbUFmdGVyLApAQCAtNjgsMTEgKzY4LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX292ZXJyaWRlc0l0ZW1BZnRlciB8fCAhaXNO
b2RlTGlzdChjb2xsZWN0aW9uVHlwZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkR5bmFtaWNO
b2RlTGlzdENhY2hlQmFzZSgpIHsgfQotCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAotcHVibGljOgorICAgIC8vIERPTSBBUEkK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IE9WRVJSSURFOworCiAgICAgQUxX
QVlTX0lOTElORSBib29sIGhhc0lkTmFtZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gIWlzTm9kZUxp
c3QodHlwZSgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50
IHx8IG1fcm9vdFR5cGUgPT0gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnRJZk93bmVySGFzSXRl
bXJlZkF0dHI7IH0KICAgICBBTFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBp
bnZhbGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RJbnZh
bGlkYXRpb25UeXBlPihtX2ludmFsaWRhdGlvblR5cGUpOyB9CkBAIC0xMjMsOCArMTI0LDYgQEAg
cHJvdGVjdGVkOgogICAgIGJvb2wgaGFzTmFtZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc05h
bWVDYWNoZVZhbGlkOyB9CiAgICAgdm9pZCBzZXRIYXNOYW1lQ2FjaGUoKSBjb25zdCB7IG1faXNO
YW1lQ2FjaGVWYWxpZCA9IHRydWU7IH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aENvbW1vbigpIGNv
bnN0OwotICAgIE5vZGUqIGl0ZW1Db21tb24odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsKICAgICBO
b2RlKiBpdGVtQmVmb3JlT3JBZnRlckNhY2hlZEl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsK
ICAgICBOb2RlKiBpdGVtQWZ0ZXIodW5zaWduZWQmLCBOb2RlKiBwcmV2aW91c0l0ZW0pIGNvbnN0
OwogCkBAIC0xODIsNyArMTgxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIER5bmFtaWNOb2RlTGlz
dENhY2hlQgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotY2xhc3MgRHluYW1pY05vZGVMaXN0IDog
cHVibGljIE5vZGVMaXN0LCBwdWJsaWMgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHsKK2NsYXNz
IER5bmFtaWNOb2RlTGlzdCA6IHB1YmxpYyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgewogcHVi
bGljOgogICAgIER5bmFtaWNOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG93bmVyTm9kZSwgQ29s
bGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUsIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGUsIE5v
ZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQogICAgICAgICA6IER5bmFt
aWNOb2RlTGlzdENhY2hlQmFzZShvd25lck5vZGUuZ2V0KCksIHJvb3RUeXBlLCBpbnZhbGlkYXRp
b25UeXBlLCBjb2xsZWN0aW9uVHlwZSA9PSBDaGlsZE5vZGVMaXN0VHlwZSwKQEAgLTE5MCwxNiAr
MTg5LDEwIEBAIHB1YmxpYzoKICAgICB7IH0KICAgICB2aXJ0dWFsIH5EeW5hbWljTm9kZUxpc3Qo
KSB7IH0KIAotICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgTm9kZUxpc3QKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Tm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Tm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwotCiAgICAgLy8g
T3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQorICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBub2RlTWF0Y2hlcyhFbGVtZW50KikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKLQogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljTm9kZUxpc3QoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiB9OwpAQCAtMjExLDggKzIwNCw2IEBAIHB1YmxpYzoKICAgICAg
ICAgZG9jdW1lbnQoKS0+dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUodGhpcyk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dCBPVkVSUklERTsKLQogcHJvdGVjdGVkOgogICAgIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoUGFz
c1JlZlB0cjxOb2RlPiBub2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBOb2RlTGlzdEludmFsaWRh
dGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSwgTm9kZUxpc3RSb290VHlwZSByb290VHlwZSA9IE5v
ZGVMaXN0SXNSb290ZWRBdE5vZGUpCiAgICAgICAgIDogRHluYW1pY05vZGVMaXN0KG5vZGUsIHR5
cGUsIHJvb3RUeXBlLCBpbnZhbGlkYXRpb25UeXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmgJ
KHJldmlzaW9uIDEzNTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBOb2RlTGlzdAogICAgICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgTm9kZSogaXRlbVdp
dGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKLSAgICAgICAgCisgICAgICAg
IHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsK
KwogICAgICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0R5bmFtaWNOb2RlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwCShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBOb2RlKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3Q6Oml0ZW0odW5zaWduCiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUq
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYg
ZWxlbWVudElkKSBjb25zdAorTm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAgTGlzdEhhc2hTZXQ8
UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwogICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX25vZGVz
LmVuZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
aAkocmV2aXNpb24gMTM1NTMzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXRO
b2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qobm9kZXMpKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
Tm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVt
V2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9k
ZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAx
MzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIE5vZGUqIFN0YXRpY05vZGVMaXN0OjppdGVtKHVuc2ln
bmVkIGluZGUKICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogU3RhdGljTm9kZUxpc3Q6Oml0ZW1X
aXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK05vZGUqIFN0YXRp
Y05vZGVMaXN0OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0
CiB7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG1fbm9kZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0
aWNOb2RlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2Rl
TGlzdC5oCShyZXZpc2lvbiAxMzU1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9k
ZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY05vZGVMaXN0KG5vZGVz
KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKKyAg
ICAgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBTdGF0aWNOb2Rl
TGlzdChWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzNTUzNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksMTggKzM2OSwx
OCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgRHluYW1pY05vZGVMaXN0Q2FjaGVCCiAgICAgICAgIEFT
U0VSVCghZWxlbWVudHNBcnJheU9mZnNldCk7CiB9CiAKLXVuc2lnbmVkIER5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6bGVuZ3RoQ29tbW9uKCkgY29uc3QKK3Vuc2lnbmVkIER5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoaXNMZW5ndGhDYWNoZVZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRMZW5ndGgoKTsKIAotICAgIGl0ZW1Db21tb24oVUlO
VF9NQVgpOworICAgIGl0ZW0oVUlOVF9NQVgpOwogICAgIEFTU0VSVChpc0xlbmd0aENhY2hlVmFs
aWQoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNhY2hlZExlbmd0aCgpOwogfQogCi1Ob2RlKiBEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZW1Db21tb24odW5zaWduZWQgb2Zmc2V0KSBjb25zdAor
Tm9kZSogRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29u
c3QKIHsKICAgICBpZiAoaXNJdGVtQ2FjaGVWYWxpZCgpICYmIGNhY2hlZEl0ZW1PZmZzZXQoKSA9
PSBvZmZzZXQpCiAgICAgICAgIHJldHVybiBjYWNoZWRJdGVtKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzU1MzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0ICszMywxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+LCBwdWJs
aWMgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlIHsKK2NsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVi
bGljIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7
CiAgICAgdmlydHVhbCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkKLSAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhDb21tb24oKTsgfQotICAgIE5v
ZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBpdGVtQ29tbW9uKG9mZnNl
dCk7IH0KICAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29uc3QgU3RyaW5nJik7
CiAKQEAgLTgxLDYgKzc5LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIGNoZWNr
Rm9yTmFtZU1hdGNoKEVsZW1lbnQqLCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNOb2RlTGlzdCgpIGNv
bnN0IE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiB0cnVlOyB9CisKICAg
ICBzdGF0aWMgdm9pZCBhcHBlbmQoTm9kZUNhY2hlTWFwJiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
RWxlbWVudCopOwogCiAgICAgbXV0YWJsZSBOb2RlQ2FjaGVNYXAgbV9pZENhY2hlOwo=
</data>
<flag name="review"
          id="191417"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>