<?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>84387</bug_id>
          
          <creation_ts>2012-04-19 14:50:43 -0700</creation_ts>
          <short_desc>[chromium] DomStorage events handling needs TLC (1)</short_desc>
          <delta_ts>2012-04-30 11:43:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85215</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>605946</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-19 14:50:43 -0700</bug_when>
    <thetext>Events are handled inconsistently. The dispatch of some events are initiated from within webkit/webcore, the dispatch of other events are initiated from the outside via the WebKit::WebStorageEventDispatcher interface. The existing WebStorageEventDispatcher is not expressive enough to handle initiated all events from the outside. There&apos;s a chunk of nearly replicated code in there that shouldn&apos;t be. The existing code has several FIXMEs related to making this better.

It could use some TLC for those reasons alone, but the current state of things in webkit/webcore is also blocking development of some overall performance improvements to chromium&apos;s implemention of this feature (getting rid of sync ipcs for each access and adding a renderer-side caching layer).

To facilitate the perf improvements, event dispatching needs to be initiated from the outside because there may be an async latency between setting an item and receiving the &apos;oldValue&apos; from the main browser process which is needed to raise the mutation event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606000</commentid>
    <comment_count>1</comment_count>
      <attachid>137993</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-19 15:28:14 -0700</bug_when>
    <thetext>Created attachment 137993
events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606003</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 15:30:39 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606005</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 15:30:59 -0700</bug_when>
    <thetext>Attachment 137993 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/src/StorageAreaProxy.cpp:202:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebKit/chromium/src/StorageAreaProxy.h:72:  The parameter name &quot;storage&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606017</commentid>
    <comment_count>4</comment_count>
      <attachid>137994</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-19 15:37:13 -0700</bug_when>
    <thetext>Created attachment 137994
events

style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606845</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-20 13:13:04 -0700</bug_when>
    <thetext>ping somebody with a (r) next to your name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607244</commentid>
    <comment_count>6</comment_count>
      <attachid>137994</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-21 11:13:33 -0700</bug_when>
    <thetext>Comment on attachment 137994
events

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

&gt; Source/WebKit/chromium/public/WebStorageEventDispatcher.h:49
&gt; +            bool originatedInProcess);

I should probably rename the &apos;sourceArea&apos; param to &apos;sourceAreaInstance&apos; to be more clear. The intent of that param is to identify the Document that caused the mutation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607249</commentid>
    <comment_count>7</comment_count>
      <attachid>137994</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-21 11:38:04 -0700</bug_when>
    <thetext>Comment on attachment 137994
events

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

&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:200
&gt; +            if (frame-&gt;document()-&gt;securityOrigin()-&gt;equal(securityOrigin) &amp;&amp; !IsEventSource(frame-&gt;domWindow()-&gt;optionalLocalStorage(), sourceArea))

I suspect this SecurityOrigin::equal() test could give us some testing grief, some tests use file urls whose origins are considered unique (and things just behave differently). I&apos;m working on the chrome-side changes to use the new dispatch API and will find out soon enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607304</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-21 18:02:54 -0700</bug_when>
    <thetext>Adam is on vacation for another week, but he&apos;s a great person to have review this patch.  If you can wait until May (and likely ping him again) that would probably be best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607328</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-21 21:16:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Adam is on vacation for another week, but he&apos;s a great person to have review this patch.  If you can wait until May (and likely ping him again) that would probably be best.

I&apos;ll be out that first week of May and I was kind of hoping to be wrapping up this project by the end of next week.

Maybe dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org could take a peek.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607369</commentid>
    <comment_count>10</comment_count>
      <attachid>137994</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-22 12:37:03 -0700</bug_when>
    <thetext>Comment on attachment 137994
events

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

Here are a few general comments.

&gt; Source/WebCore/ChangeLog:18
&gt; +        To facilitate the perf improvements, this patch adds WebKit API too allow all

too -&gt; to

&gt; Source/WebCore/ChangeLog:28
&gt; +        xxxxxxx 4/5: cleanup, remove extra params from new API whose only purpose was to

was to ... what? :)

&gt; Source/WebCore/page/DOMWindow.h:358
&gt; +        Storage* optionalSessionStorage() const { return m_sessionStorage.get(); }
&gt; +        Storage* optionalLocalStorage() const { return m_localStorage.get(); }

&quot;optional&quot; seems unclear in meaning. Does this goe around the RAII in the original accessor? In WebKit, we usually do the other way around, with &quot;ensure&quot; function to do the initialization. I guess we could name it something like sessionStorageOrNull?

&gt; Source/WebCore/storage/Storage.h:54
&gt; +        StorageArea* area() const { return m_storageArea.get(); }

I am not familiar with this code -- why was area kept private before?

&gt; Source/WebKit/chromium/public/WebStorageEventDispatcher.h:58
&gt; +    // DEPRECATED - The instance methods are going away soon in favor

Perhaps link to a bug that aims to remove this?

&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:186
&gt; +    // FIXME: Multi-sided patch engineering alert !

Perhaps link to a meta bug that explains the effort?

&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:203
&gt; +    const HashSet&lt;Page*&gt;&amp; pages = PageGroup::pageGroup(pageGroupName)-&gt;pages();
&gt; +    for (HashSet&lt;Page*&gt;::const_iterator it = pages.begin(); it != pages.end(); ++it) {
&gt; +        for (Frame* frame = (*it)-&gt;mainFrame(); frame; frame = frame-&gt;tree()-&gt;traverseNext()) {
&gt; +            if (frame-&gt;document()-&gt;securityOrigin()-&gt;equal(securityOrigin) &amp;&amp; !IsEventSource(frame-&gt;domWindow()-&gt;optionalLocalStorage(), sourceArea))
&gt; +                frames.append(frame);
&gt; +        }
&gt; +    }

This looks like an isolated helper function -- and eric@ is right that abarth@ is a good person to look at this.

&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:210
&gt; +            frames[i]-&gt;document()-&gt;enqueueWindowEvent(StorageEvent::create(eventNames().storageEvent, key, oldValue, newValue, pageURL, storage));

Interesting -- since we just enqueue events, do we need to worry about guarding the frames?

&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:234
&gt; +    Vector&lt;RefPtr&lt;Frame&gt; &gt; frames;
&gt; +    for (Frame* frame = page-&gt;mainFrame(); frame; frame = frame-&gt;tree()-&gt;traverseNext()) {
&gt; +        if (frame-&gt;document()-&gt;securityOrigin()-&gt;equal(securityOrigin) &amp;&amp; !IsEventSource(frame-&gt;domWindow()-&gt;optionalSessionStorage(), sourceArea))
&gt; +            frames.append(frame);
&gt; +    }

Ditto about the helper function.

&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:241
&gt; +            frames[i]-&gt;document()-&gt;enqueueWindowEvent(StorageEvent::create(eventNames().storageEvent, key, oldValue, newValue, pageURL, storage));

Ditto about async event dispatch.

&gt; Source/WebKit/chromium/src/StorageAreaProxy.h:73
&gt; +    static bool IsEventSource(Storage*, WebKit::WebStorageArea* sourceArea);
&gt; +    static Page* FindPageWithSessionStorageNamespace(const String&amp; pageGroupName, const WebKit::WebStorageNamespace&amp; sessionNamespace);

lowercase names.

&gt; Source/WebKit/chromium/src/StorageEventDispatcherImpl.cpp:44
&gt; +// FIXME: delete this almost obsolete file soon

Link to a bug?

&gt; Source/WebKit/chromium/src/WebStorageEventDispatcherImpl.cpp:45
&gt; +// static

No need for this comment in WebKit-land.

&gt; Source/WebKit/chromium/src/WebStorageEventDispatcherImpl.cpp:52
&gt; +    RefPtr&lt;WebCore::SecurityOrigin&gt; securityOrigin = WebCore::SecurityOrigin::create(origin);

Creating a security origin? Must check with @abarth :)

&gt; Source/WebKit/chromium/src/WebStorageEventDispatcherImpl.cpp:58
&gt; +// static

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607406</commentid>
    <comment_count>11</comment_count>
      <attachid>137994</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-22 17:33:20 -0700</bug_when>
    <thetext>Comment on attachment 137994
events

&gt;&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:186
&gt;&gt; +    // FIXME: Multi-sided patch engineering alert !
&gt; 
&gt; Perhaps link to a meta bug that explains the effort?

The bug is this bug, this comment just describes the multi-sided sequence of patches to alter the interfaces as described in this bug. This bug mentions &apos;overall performance improvements&apos; as a goal, with the exception of these api changes, that effort is in the chrome codebase so it doesn&apos;t make sense to have a meta bug in webkit for that effort. Here&apos;s some related work in progress over there.

http://codereview.chromium.org/10160003/
http://codereview.chromium.org/10162015/  

The first defines a set of more async ipcs. The second is very preliminary yet, but if you squint, you can see where a caching layer is to be inserted in the renderer.


&gt;&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:203
&gt;&gt; +    }
&gt; 
&gt; This looks like an isolated helper function -- and eric@ is right that abarth@ is a good person to look at this.

Its defined as a static class method for two reasons, it accesses private members of this class to do its work, and the function it performs is very much related to this class which is all about proxying between the embedder and webcore internals. Do you think it would be better to have these methods elsewhere, where, and why?

&gt;&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:210
&gt;&gt; +            frames[i]-&gt;document()-&gt;enqueueWindowEvent(StorageEvent::create(eventNames().storageEvent, key, oldValue, newValue, pageURL, storage));
&gt; 
&gt; Interesting -- since we just enqueue events, do we need to worry about guarding the frames?

I think you&apos;re right. I&apos;ll pull this up into the loop above on my next upload of this patch. Thnx.

&gt;&gt; Source/WebKit/chromium/src/StorageAreaProxy.h:73
&gt;&gt; +    static Page* FindPageWithSessionStorageNamespace(const String&amp; pageGroupName, const WebKit::WebStorageNamespace&amp; sessionNamespace);
&gt; 
&gt; lowercase names.

doh!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607749</commentid>
    <comment_count>12</comment_count>
      <attachid>137994</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-23 09:22:23 -0700</bug_when>
    <thetext>Comment on attachment 137994
events

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

&gt;&gt;&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:186
&gt;&gt;&gt; +    // FIXME: Multi-sided patch engineering alert !
&gt;&gt; 
&gt;&gt; Perhaps link to a meta bug that explains the effort?
&gt; 
&gt; The bug is this bug, this comment just describes the multi-sided sequence of patches to alter the interfaces as described in this bug. This bug mentions &apos;overall performance improvements&apos; as a goal, with the exception of these api changes, that effort is in the chrome codebase so it doesn&apos;t make sense to have a meta bug in webkit for that effort. Here&apos;s some related work in progress over there.
&gt; 
&gt; http://codereview.chromium.org/10160003/
&gt; http://codereview.chromium.org/10162015/  
&gt; 
&gt; The first defines a set of more async ipcs. The second is very preliminary yet, but if you squint, you can see where a caching layer is to be inserted in the renderer.

I was more thinking along the lines of linking to a bug that tracks changes in WebKit. Here&apos;s an example of what I was describing: http://code.google.com/searchframe#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/dom/ShadowRoot.cpp&amp;exact_package=chromium&amp;q=authorshadow&amp;type=cs&amp;l=75

Here, we aim to eventually get rid of this whole function, but can&apos;t at the moment. Each condition is thus tracked by a bug, so that those reading or refactoring the code could understand the wider context. It is totally uncritical for this patch, since you probably will have this done quickly.

&gt;&gt;&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:203
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; This looks like an isolated helper function -- and eric@ is right that abarth@ is a good person to look at this.
&gt; 
&gt; Its defined as a static class method for two reasons, it accesses private members of this class to do its work, and the function it performs is very much related to this class which is all about proxying between the embedder and webcore internals. Do you think it would be better to have these methods elsewhere, where, and why?

The function of populating vector of frame ref ptrs seems like a  nicely isolatable free-standing function (same code is also present in dispatchSessionStorageEvent), but I think you may not need it at all, since the event dispatch is async.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607968</commentid>
    <comment_count>13</comment_count>
      <attachid>138410</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-23 13:22:57 -0700</bug_when>
    <thetext>Created attachment 138410
events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607970</commentid>
    <comment_count>14</comment_count>
      <attachid>138411</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-23 13:26:19 -0700</bug_when>
    <thetext>Created attachment 138411
events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607986</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-23 13:42:15 -0700</bug_when>
    <thetext>New patch
- lowered uppercase method names
- removed // static code comments
- removed second loop in each of the dispatch[Type]StorageEvents methods
- fixed ChangeLog&apos;isms
- removed a couple more param names from method declarations
- renamed sourceArea params to sourceAreaInstance (not sure it helps that much, but a little)

Some responses to earlier comments...

&gt; &quot;optional&quot; seems unclear in meaning
For consistency, these names are being patterned off of an existing method named in this same way. Widen the diff context a little and see optionalApplicationCache().

&gt; I am not familiar with this code -- why was area kept private before?
There simply was no need for it to be exposed before. The webcore ChangeLog comment has been modified to explain the reason for these changes.

&gt; The function of populating vector of frame ref ptrs seems like...
I see, I misunderstood your meaning and thought you were referring to the dispatch[]StorageEvents() methods as a whole. In any case, that loop populating the separate vector of frames has been removed in the latest snapshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608172</commentid>
    <comment_count>16</comment_count>
      <attachid>138411</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-23 16:25:48 -0700</bug_when>
    <thetext>Comment on attachment 138411
events

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

ok with a nit.

&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:243
&gt; +Page* StorageAreaProxy::findPageWithSessionStorageNamespace(const String&amp; pageGroupName, const WebKit::WebStorageNamespace&amp; sessionNamespace)

This looks like it can be just a freestanding static function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608182</commentid>
    <comment_count>17</comment_count>
      <attachid>138411</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-23 16:41:19 -0700</bug_when>
    <thetext>Comment on attachment 138411
events

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

&gt;&gt; Source/WebKit/chromium/src/StorageAreaProxy.cpp:243
&gt;&gt; +Page* StorageAreaProxy::findPageWithSessionStorageNamespace(const String&amp; pageGroupName, const WebKit::WebStorageNamespace&amp; sessionNamespace)
&gt; 
&gt; This looks like it can be just a freestanding static function.

yup, thnx!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608195</commentid>
    <comment_count>18</comment_count>
      <attachid>138460</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-23 16:54:04 -0700</bug_when>
    <thetext>Created attachment 138460
events - patch for landing

made findPageWithSessionStorageNamespace() a free standing static helper function instead of a static class method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608352</commentid>
    <comment_count>19</comment_count>
      <attachid>138460</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 21:20:09 -0700</bug_when>
    <thetext>Comment on attachment 138460
events - patch for landing

Clearing flags on attachment: 138460

Committed r114993: &lt;http://trac.webkit.org/changeset/114993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608353</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 21:20:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612081</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-27 19:16:06 -0700</bug_when>
    <thetext>reopening for the next in the sequence</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612083</commentid>
    <comment_count>22</comment_count>
      <attachid>139320</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-27 19:18:14 -0700</bug_when>
    <thetext>Created attachment 139320
events3

Now that http://codereview.chromium.org/10201010/ has landed, some cleanup and next steps can be taken back here in webkit land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612085</commentid>
    <comment_count>23</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-27 19:18:58 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; reopening for the next in the sequence

Don&apos;t do that. In WebKit, a bug is a patch. Umbrella bugs serve the purpose of grouping bugs. See this for example: https://bugs.webkit.org/showdependencytree.cgi?id=52962&amp;hide_resolved=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612086</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-27 19:20:54 -0700</bug_when>
    <thetext>Attachment 139320 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/storage/StorageArea.h:52:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/StorageAreaProxy.h:54:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/StorageAreaProxy.h:62:  The parameter name &quot;pageGroup&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/StorageAreaProxy.h:65:  The parameter name &quot;pageGroup&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/storage/StorageAreaImpl.h:49:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/WebStorageArea.h:66:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebStorageArea.h:75:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebStorageArea.h:83:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebStorageArea.h:92:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612254</commentid>
    <comment_count>25</comment_count>
      <attachid>139320</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-28 05:03:25 -0700</bug_when>
    <thetext>Comment on attachment 139320
events3

Attachment 139320 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12555598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612706</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-30 09:45:40 -0700</bug_when>
    <thetext>One patch per bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612813</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-04-30 11:43:15 -0700</bug_when>
    <thetext>new sacrificial bug offerings created: 85215, 85221</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137993</attachid>
            <date>2012-04-19 15:28:14 -0700</date>
            <delta_ts>2012-04-19 15:37:13 -0700</delta_ts>
            <desc>events</desc>
            <filename>events.txt</filename>
            <type>text/plain</type>
            <size>22558</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDY2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA0LTE5ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9t
U3RvcmFnZSBldmVudCBoYW5kbGluZyBtb2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzODcKKworICAgICAgICBFdmVudHMgYXJlIGN1cnJlbnRs
eSBoYW5kbGVkIGluY29uc2lzdGVudGx5LiBUaGUgZGlzcGF0Y2ggb2Ygc29tZSBldmVudHMgYXJl
CisgICAgICAgIGluaXRpYXRlZCBmcm9tIHdpdGhpbiB3ZWJraXQvd2ViY29yZSwgdGhlIGRpc3Bh
dGNoIG9mIG90aGVyIGV2ZW50cyBhcmUgaW5pdGlhdGVkCisgICAgICAgIGZyb20gdGhlIG91dHNp
ZGUgdmlhIHRoZSBXZWJLaXQ6OldlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIgaW50ZXJmYWNlLiBU
aGUgZXhpc3RpbmcKKyAgICAgICAgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciBpcyBub3QgZXhw
cmVzc2l2ZSBlbm91Z2ggdG8gaGFuZGxlIGluaXRpYXRpb24gYWxsIAorICAgICAgICBldmVudHMg
ZnJvbSB0aGUgb3V0c2lkZS4gVGhlcmUncyBhIGNodW5rIG9mIG5lYXJseSByZXBsaWNhdGVkIGNv
ZGUgaW4gdGhlcmUKKyAgICAgICAgdGhhdCBzaG91bGRuJ3QgYmUuIFRoZSBleGlzdGluZyBjb2Rl
IGhhcyBzZXZlcmFsIEZJWE1FcyByZWxhdGVkIHRvIG1ha2luZworICAgICAgICB0aGlzIGJldHRl
ci4KKworICAgICAgICBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MgaW4gd2Via2l0L3dlYmNv
cmUgaXMgYWxzbyBibG9ja2luZyBkZXZlbG9wbWVudCBvZiBzb21lCisgICAgICAgIG92ZXJhbGwg
cGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIHRvIGNocm9taXVtJ3MgaW1wbGVtZW50aW9uIG9mIHRo
aXMgZmVhdHVyZSAoZ2V0dGluZworICAgICAgICByaWQgb2Ygc3luYyBpcGNzIGZvciBlYWNoIGFj
Y2VzcyBhbmQgYWRkaW5nIGEgcmVuZGVyZXItc2lkZSBjYWNoaW5nIGxheWVyKS4KKworICAgICAg
ICBUbyBmYWNpbGl0YXRlIHRoZSBwZXJmIGltcHJvdmVtZW50cywgdGhpcyBwYXRjaCBhZGRzIFdl
YktpdCBBUEkgdG9vIGFsbG93IGFsbAorICAgICAgICBEb21TdG9yYWdlIGV2ZW50cyB0byBiZSBp
bml0aWF0ZWQgZnJvbSB0aGUgb3V0c2lkZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZQorICAgICAg
ICB0aGVyZSB3aWxsIGJlIGFuIGFzeW5jIGxhdGVuY3kgYmV0d2VlbiBzZXR0aW5nIGFuIGl0ZW0g
YW5kIHJlY2VpdmluZyB0aGUKKyAgICAgICAgJ29sZFZhbHVlJyBmcm9tIHRoZSBtYWluIGJyb3dz
ZXIgcHJvY2VzcyB3aGljaCBpcyByZXF1aXJlZCB0byByYWlzZSB0aGUKKyAgICAgICAgbXV0YXRp
b24gZXZlbnQuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgYSBtdWx0aS1zaWRlZCBz
ZXF1ZW5jZSBvZiBwYXRjaGVzIHRvIG1ha2UgdGhpcyB0cmFuc2l0aW9uLgorICAgICAgICB3a3Bh
dGNoIDE6IGFkZCB0aGUgbmV3IHdpZGVyIFdlYktpdCBBUEkgYW5kIGltcGwKKyAgICAgICAgY3Jw
YXRjaCAyOiBzdGFydCB1c2luZyB0aGUgbmV3IHdpZGVyIFdlYktpdCBBUEkKKyAgICAgICAgd2tw
YXRjaCAzOiBjbGVhbnVwLCBkZWxldGUgdGhlIG9sZCBXZWJLaXQgQVBJIGFuZCBpbXBsCisgICAg
ICAgIHh4eHh4eHggNC81OiBjbGVhbnVwLCByZW1vdmUgZXh0cmEgcGFyYW1zIGZyb20gbmV3IEFQ
SSB3aG9zZSBvbmx5IHB1cnBvc2Ugd2FzIHRvCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBuZXcgZnVuY3Rpb25hbGl0eSBv
ciBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcHRpb25hbFNlc3Npb25TdG9yYWdlKTogc2ltcGxl
IGlubGluZSBnZXR0ZXIgdG8gYXZvaWQgY29uc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlCisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wdGlvbmFsTG9jYWxTdG9yYWdlKTogZGl0dG8KKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmFy
ZWEpOiBzaW1wbGUgaW5saW5lIGdldHRlcgorCiAyMDEyLTA0LTE5ICBLZW4gQnVjaGFuYW4gIDxr
ZW5yYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUG9zaXRpb25lZCBjaGlsZHJlbiBvZiBydWJ5
IHJ1bnMgbm90IGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBsYXlvdXQKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCiAgICAgICAgIFN0
b3JhZ2UqIHNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICAgICAgU3Rv
cmFnZSogbG9jYWxTdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAgU3RvcmFn
ZSogb3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvblN0b3Jh
Z2UuZ2V0KCk7IH0KKyAgICAgICAgU3RvcmFnZSogb3B0aW9uYWxMb2NhbFN0b3JhZ2UoKSBjb25z
dCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKFFVT1RBKQog
ICAgICAgICBTdG9yYWdlSW5mbyogd2Via2l0U3RvcmFnZUluZm8oKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZS5oCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3Q7CiAKKyAgICAgICAgU3RvcmFnZUFyZWEqIGFyZWEoKSBjb25zdCB7IHJldHVybiBt
X3N0b3JhZ2VBcmVhLmdldCgpOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlKEZy
YW1lKiwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gMTE0NjY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0wNC0xOSAgTWljaGFl
bCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIERv
bVN0b3JhZ2UgZXZlbnQgaGFuZGxpbmcgbW9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzg3CisKKyAgICAgICAgRXZlbnRzIGFyZSBjdXJyZW50
bHkgaGFuZGxlZCBpbmNvbnNpc3RlbnRseS4gVGhlIGRpc3BhdGNoIG9mIHNvbWUgZXZlbnRzIGFy
ZQorICAgICAgICBpbml0aWF0ZWQgZnJvbSB3aXRoaW4gd2Via2l0L3dlYmNvcmUsIHRoZSBkaXNw
YXRjaCBvZiBvdGhlciBldmVudHMgYXJlIGluaXRpYXRlZAorICAgICAgICBmcm9tIHRoZSBvdXRz
aWRlIHZpYSB0aGUgV2ViS2l0OjpXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIGludGVyZmFjZS4g
VGhlIGV4aXN0aW5nCisgICAgICAgIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIgaXMgbm90IGV4
cHJlc3NpdmUgZW5vdWdoIHRvIGhhbmRsZSBpbml0aWF0aW9uIGFsbCAKKyAgICAgICAgZXZlbnRz
IGZyb20gdGhlIG91dHNpZGUuIFRoZXJlJ3MgYSBjaHVuayBvZiBuZWFybHkgcmVwbGljYXRlZCBj
b2RlIGluIHRoZXJlCisgICAgICAgIHRoYXQgc2hvdWxkbid0IGJlLiBUaGUgZXhpc3RpbmcgY29k
ZSBoYXMgc2V2ZXJhbCBGSVhNRXMgcmVsYXRlZCB0byBtYWtpbmcKKyAgICAgICAgdGhpcyBiZXR0
ZXIuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzIGluIHdlYmtpdC93ZWJj
b3JlIGlzIGFsc28gYmxvY2tpbmcgZGV2ZWxvcG1lbnQgb2Ygc29tZQorICAgICAgICBvdmVyYWxs
IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyB0byBjaHJvbWl1bSdzIGltcGxlbWVudGlvbiBvZiB0
aGlzIGZlYXR1cmUgKGdldHRpbmcKKyAgICAgICAgcmlkIG9mIHN5bmMgaXBjcyBmb3IgZWFjaCBh
Y2Nlc3MgYW5kIGFkZGluZyBhIHJlbmRlcmVyLXNpZGUgY2FjaGluZyBsYXllcikuCisKKyAgICAg
ICAgVG8gZmFjaWxpdGF0ZSB0aGUgcGVyZiBpbXByb3ZlbWVudHMsIHRoaXMgcGF0Y2ggYWRkcyBX
ZWJLaXQgQVBJIHRvbyBhbGxvdyBhbGwKKyAgICAgICAgRG9tU3RvcmFnZSBldmVudHMgdG8gYmUg
aW5pdGlhdGVkIGZyb20gdGhlIG91dHNpZGUuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UKKyAgICAg
ICAgdGhlcmUgd2lsbCBiZSBhbiBhc3luYyBsYXRlbmN5IGJldHdlZW4gc2V0dGluZyBhbiBpdGVt
IGFuZCByZWNlaXZpbmcgdGhlCisgICAgICAgICdvbGRWYWx1ZScgZnJvbSB0aGUgbWFpbiBicm93
c2VyIHByb2Nlc3Mgd2hpY2ggaXMgcmVxdWlyZWQgdG8gcmFpc2UgdGhlCisgICAgICAgIG11dGF0
aW9uIGV2ZW50LgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IG9mIGEgbXVsdGktc2lkZWQg
c2VxdWVuY2Ugb2YgcGF0Y2hlcyB0byBtYWtlIHRoaXMgdHJhbnNpdGlvbi4KKyAgICAgICAgd2tw
YXRjaCAxOiBhZGQgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJIGFuZCBpbXBsCisgICAgICAgIGNy
cGF0Y2ggMjogc3RhcnQgdXNpbmcgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJCisgICAgICAgIHdr
cGF0Y2ggMzogY2xlYW51cCwgZGVsZXRlIHRoZSBvbGQgV2ViS2l0IEFQSSBhbmQgaW1wbAorICAg
ICAgICB4eHh4eHh4IDQvNTogY2xlYW51cCwgcmVtb3ZlIGV4dHJhIHBhcmFtcyBmcm9tIG5ldyBB
UEkgd2hvc2Ugb25seSBwdXJwb3NlIHdhcyB0bworICAgICAgICAgICAgICAgICAgICAgYWxsb3cg
dGhlIHRyYW5zaXRpb24KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg6IEFkZCBuZXcgQVBJ
IHRvIGRpc3BhdGNoIGV2ZW50cy4KKyAgICAgICAgKiBwdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFj
ZS5oOiBBZGQgbmV3IEFQSSB0byB0ZXN0IGZvciBuYW1lc3BhY2UgZXF1YWxpdHkuCisgICAgICAg
ICogc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFy
ZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6IGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBuZXcgQVBJCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQpOiAgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBBUEkKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OklzRXZlbnRTb3VyY2UpOiBhIGhlbHBlciBt
ZXRob2QKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OkZpbmRQYWdlV2l0aFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKTogYSBoZWxwZXIgbWV0aG9kCisgICAgICAgICogc3JjL1N0
b3JhZ2VBcmVhUHJveHkuaDoKKyAgICAgICAgKiBzcmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcklt
cGwuY3BwOiBhZGRlZCBhIEZJWE1FIGNvbW1lbnQgdG8gZGVsZXRlIHNvb24KKyAgICAgICAgKiBz
cmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2VQcm94eTo6SXNTYW1lTmFtZXNwYWNlKTogcGx1bWJpbmcgdG8gY2FsbCB0aGUgbmV3
IEFQSQorICAgICAgICAqIHNyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaDoKKyAgICAgICAgKiBz
cmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KTogcGx1
bWJpbmcgdG8gY2FsbCB0aGUgbmV3IGltcGwKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KTogcGx1bWJpbmcgdG8g
Y2FsbCB0aGUgbmV3IGltcGwKKyAgICAgICAgKiBzcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ckltcGwuaDogYWRkZWQgYSBGSVhNRSBjb21tZW50IHRvIGRlbGV0ZSBzb29uCisKIDIwMTItMDQt
MTkgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gQ2FsbCBhdWRpb0hhcmR3YXJlQnVmZmVyU2l6ZSBkaXJlY3RseQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VFdmVudERp
c3BhdGNoZXIuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
NyArMzUsMzAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0b3JhZ2VBcmVh
OworY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKIAotLy8gVGhpcyBp
cyB1c2VkIHRvIGRpc3BhdGNoIHN0b3JhZ2UgZXZlbnRzIHRvIGFsbCBwYWdlcy4KLS8vIEZJWE1F
OiBNYWtlIHRoaXMgKG9yIHNvbWV0aGluZykgd29yayBmb3IgU2Vzc2lvblN0b3JhZ2UhCiBjbGFz
cyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyKiBjcmVhdGUoKTsKKyAgICAvLyBEaXNw
YXRjaCBhIGxvY2FsIHN0b3JhZ2UgZXZlbnQgdG8gYXBwcm9waWF0ZSBkb2N1bWVudHMuCisgICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KAorICAg
ICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUs
CisgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwmIG9y
aWdpbiwKKyAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVybCwgV2ViU3RvcmFnZUFyZWEq
IHNvdXJjZUFyZWEsCisgICAgICAgICAgICBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOwogCi0g
ICAgdmlydHVhbCB+V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpIHsgfQorICAgIC8vIERpc3Bh
dGNoIGEgc2Vzc2lvbiBzdG9yYWdlIGV2ZW50IHRvIGFwcHJvcGlhdGUgZG9jdW1lbnRzLgorICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAor
ICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFs
dWUsCisgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwm
IG9yaWdpbiwKKyAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVybCwgY29uc3QgV2ViU3Rv
cmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSwKKyAgICAgICAgICAgIFdlYlN0b3JhZ2VB
cmVhKiBzb3VyY2VBcmVhLCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOwogCi0gICAgLy8gRGlz
cGF0Y2ggdGhlIGFjdHVhbCBldmVudC4gIERvZXNuJ3QgeWV0IHdvcmsgZm9yIFNlc3Npb25TdG9y
YWdlLgorICAgIC8vIERFUFJFQ0FURUQgLSBUaGUgaW5zdGFuY2UgbWV0aG9kcyBhcmUgZ29pbmcg
YXdheSBzb29uIGluIGZhdm9yCisgICAgLy8gb2YgdGhlIHR3byBzdGF0aWMgZGlzcGF0Y2ggbWV0
aG9kcyBhYm92ZS4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdG9yYWdlRXZlbnREaXNw
YXRjaGVyKiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVy
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFdlYlN0
cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG9sZFZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJT
dHJpbmcmIG9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViVVJMJiB1cmwsIGJvb2wgaXNMb2NhbFN0b3JhZ2UpID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgJKHJl
dmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3Jh
Z2VOYW1lc3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gQ29weSBhIFN0b3JhZ2VOYW1lc3BhY2UuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0
aGUgY2FzZSBvZiBTZXNzaW9uU3RvcmFnZS4KICAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2UqIGNvcHkoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgb2YgdGhlIHR3byBpbnN0YW5j
ZXMgcmVwcmVzZW50IHRoZSBzYW1lIHN0b3JhZ2UgbmFtZXNwYWNlLgorICAgIHZpcnR1YWwgYm9v
bCBJc1NhbWVOYW1lc3BhY2UoY29uc3QgV2ViU3RvcmFnZU5hbWVzcGFjZSYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKICAgICAvLyBERVBSRUNBVEVECiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KCkgeyB9CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZUFyZWFQcm94eS5jcHAJKHJldmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw5
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VQcm94eS5oIgogCiAjaW5jbHVk
ZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUGVybWlzc2lvbkNsaWVudC5oIgpAQCAt
MTIxLDYgKzEyMyw3IEBAIGJvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y29udGFpbnMoY29uc3QgU3QK
ICAgICByZXR1cm4gIWdldEl0ZW0oa2V5LCBmcmFtZSkuaXNOdWxsKCk7CiB9CiAKKy8vIEZJWE1F
OiByZW1vdmUgdGhpcyBtZXRob2QgYW5kIHRoZSBjYWxscyB0byBpdCBmcm9tIG91ciBzZXR0ZXJz
IGFmdGVyIG11bHRpLXNpZGUgcGF0Y2ggbGFuZGluZyBpcyBkb25lLgogLy8gQ29waWVkIGZyb20g
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIG91dCBvZiBuZWNlc3Np
dHkuICBJdCdzIHByb2JhYmx5IGJlc3QgdG8ga2VlcCBpdCBjdXJyZW50Lgogdm9pZCBTdG9yYWdl
QXJlYVByb3h5OjpzdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBl
LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VGcmFtZSkKIHsK
QEAgLTE3Nyw0ICsxODAsODggQEAgYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9y
YWdlKAogICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXct
PnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dTdG9yYWdlKHdlYkZyYW1lLCBtX3N0b3JhZ2VUeXBl
ID09IExvY2FsU3RvcmFnZSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hM
b2NhbFN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgcGFnZVVSTCwgV2ViS2l0OjpXZWJT
dG9yYWdlQXJlYSogc291cmNlQXJlYSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQoreworICAg
IC8vIEZJWE1FOiBNdWx0aS1zaWRlZCBwYXRjaCBlbmdpbmVlcmluZyBhbGVydCAhCisgICAgLy8g
c3RlcCAxOiB0aGlzIG1ldGhvZCBnZXRzIGRlZmluZWQgYW5kIGltcGxlbWVudGVkIGluIHdlYmtp
dC93ZWJjb3JlIHdpdGggdGhlIGVhcmx5IHJldHVybi4KKyAgICAvLyBzdGVwIDI6IHRoaXMgbWV0
aG9kIHN0YXJ0cyBnZXR0aW5nIGNhbGxlZCBieSBjaHJvbWl1bSBzdGlsbCB3aXRoIHRoZSBlYXJs
eSByZXR1cm4uCisgICAgLy8gc3RlcCAzOiBUaGlzIGNsYXNzJ3Mgc2V0dGVycyBhcmUgbW9kaWZp
ZWQgdG8gbm8gbG9uZ2VyIHJhaXNlIFNlc3Npb25TdG9yYWdlCisgICAgLy8gICAgICAgICBldmVu
dHMgZm9yIGlucHJvY2VzcyBjaGFuZ2VzIGFuZCB0aGlzIGVhcmx5IHJldHVybiBpcyByZW1vdmVk
LgorICAgIGlmIChvcmlnaW5hdGVkSW5Qcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBXZSBuZWVkIHRvIGNvcHkgYWxsIHJlbGV2YW50IGZyYW1lcyBmcm9tIGV2ZXJ5IHBhZ2UgdG8g
YSB2ZWN0b3Igc2luY2Ugc2VuZGluZyB0aGUgZXZlbnQgdG8gb25lIGZyYW1lIG1pZ2h0CisgICAg
Ly8gbXV0YXRlIHRoZSBmcmFtZSB0cmVlIG9mIGFueSBnaXZlbiBwYWdlIGluIHRoZSBncm91cCBv
ciBtdXRhdGUgdGhlIHBhZ2UgZ3JvdXAgaXRzZWxmLgorICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+
ID4gZnJhbWVzOworICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpLT5wYWdlcygpOworICAgIGZvciAoSGFzaFNldDxQYWdl
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gcGFnZXMuZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAg
ICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3Vy
aXR5T3JpZ2luKSAmJiAhSXNFdmVudFNvdXJjZShmcmFtZS0+ZG9tV2luZG93KCktPm9wdGlvbmFs
TG9jYWxTdG9yYWdlKCksIHNvdXJjZUFyZWEpKSB7CisgICAgICAgICAgICAgICAgZnJhbWVzLmFw
cGVuZChmcmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBtYXliZSBvbmx5IHJhaXNlIGlmIHRoZSB3aW5kb3cgaGFzIGFuIG9uc3RvcmFnZSBsaXN0
ZW5lciBhdHRhY2hlZCB0byBhdm9pZCBjcmVhdGluZyB0aGUgU3RvcmFnZSBpbnN0YW5jZS4KKyAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBm
cmFtZXNbaV0tPmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoZWMpOworICAgICAgICBpZiAoIWVj
KQorICAgICAgICAgICAgZnJhbWVzW2ldLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQo
U3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHBhZ2VVUkwsIHN0b3JhZ2UpKTsKKyAgICB9Cit9CisKK3ZvaWQgU3Rv
cmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYg
cGFnZUdyb3VwTmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IEtVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lv
bk5hbWVzcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWEsIGJvb2wgb3JpZ2luYXRl
ZEluUHJvY2VzcykKK3sKKyAgICAvLyBGSVhNRTogTXVsdGktc2lkZWQgcGF0Y2ggZW5naW5lZXJp
bmcgYWxlcnQgIQorICAgIC8vIHN0ZXAgMTogdGhpcyBtZXRob2QgZ2V0cyBkZWZpbmVkIGFuZCBp
bXBsZW1lbnRlZCBpbiB3ZWJraXQvd2ViY29yZSB3aXRoIHRoZSBlYXJseSByZXR1cm4uCisgICAg
Ly8gc3RlcCAyOiB0aGlzIG1ldGhvZCBzdGFydHMgZ2V0dGluZyBjYWxsZWQgYnkgY2hyb21pdW0g
c3RpbGwgd2l0aCB0aGUgZWFybHkgcmV0dXJuLgorICAgIC8vIHN0ZXAgMzogVGhpcyBjbGFzcydz
IHNldHRlcnMgYXJlIG1vZGlmaWVkIHRvIG5vIGxvbmdlciByYWlzZSBTZXNzaW9uU3RvcmFnZQor
ICAgIC8vICAgICAgICAgZXZlbnRzIGZvciBpbnByb2Nlc3MgY2hhbmdlcyBhbmQgdGhpcyBlYXJs
eSByZXR1cm4gaXMgcmVtb3ZlZC4KKyAgICBpZiAob3JpZ2luYXRlZEluUHJvY2VzcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IEZpbmRQYWdlV2l0aFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKHBhZ2VHcm91cE5hbWUsIHNlc3Npb25OYW1lc3BhY2UpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4gPiBmcmFtZXM7
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0eU9yaWdpbikgJiYgIUlz
RXZlbnRTb3VyY2UoZnJhbWUtPmRvbVdpbmRvdygpLT5vcHRpb25hbFNlc3Npb25TdG9yYWdlKCks
IHNvdXJjZUFyZWEpKQorICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7CisgICAgfQor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAvLyBGSVhNRTogbWF5YmUgb25seSByYWlzZSBpZiB0aGUgd2luZG93IGhhcyBhbiBvbnN0
b3JhZ2UgbGlzdGVuZXIKKyAgICAgICAgLy8gYXR0YWNoZWQgdG8gYXZvaWQgY3JlYXRpbmcgdGhl
IFN0b3JhZ2UgaW5zdGFuY2UuCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAg
ICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWVzW2ldLT5kb21XaW5kb3coKS0+c2Vzc2lvblN0b3Jh
Z2UoZWMpOworICAgICAgICBpZiAoIWVjKQorICAgICAgICAgICAgZnJhbWVzW2ldLT5kb2N1bWVu
dCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHBhZ2VVUkwsIHN0b3JhZ2Up
KTsKKyAgICB9Cit9CisKK2Jvb2wgU3RvcmFnZUFyZWFQcm94eTo6SXNFdmVudFNvdXJjZShTdG9y
YWdlKiBzdG9yYWdlLCBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhKQoreworICAg
IGlmICghc3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0b3JhZ2VBcmVhUHJv
eHkqIGFyZWFQcm94eSA9IHN0YXRpY19jYXN0PFN0b3JhZ2VBcmVhUHJveHkqPihzdG9yYWdlLT5h
cmVhKCkpOworICAgIHJldHVybiBhcmVhUHJveHktPm1fc3RvcmFnZUFyZWEgPT0gc291cmNlQXJl
YTsKK30KKworUGFnZSogU3RvcmFnZUFyZWFQcm94eTo6RmluZFBhZ2VXaXRoU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBjb25zdCBXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2UmIHNlc3Npb25OYW1lc3BhY2UpCit7CisgICAgY29uc3QgSGFzaFNl
dDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwTmFtZSktPnBh
Z2VzKCk7CisgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdl
cy5iZWdpbigpOyBpdCAhPSBwYWdlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBjb25zdCBib29s
IGNyZWF0ZUlmTmVlZGVkID0gdHJ1ZTsKKyAgICAgICAgU3RvcmFnZU5hbWVzcGFjZVByb3h5KiBw
cm94eSA9IHN0YXRpY19jYXN0PFN0b3JhZ2VOYW1lc3BhY2VQcm94eSo+KCgqaXQpLT5zZXNzaW9u
U3RvcmFnZShjcmVhdGVJZk5lZWRlZCkpOworICAgICAgICBpZiAocHJveHktPklzU2FtZU5hbWVz
cGFjZShzZXNzaW9uTmFtZXNwYWNlKSkKKyAgICAgICAgICAgIHJldHVybiAqaXQ7CisgICAgfQor
ICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCShyZXZpc2lvbiAxMTQ2
NjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxOCBAQAogCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEu
aCIKIAotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYlN0b3JhZ2VBcmVhOyB9CituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFdlYlN0b3JhZ2VBcmVhOworY2xhc3MgV2ViU3RvcmFnZU5hbWVz
cGFjZTsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKK2NsYXNzIEtV
Ukw7CitjbGFzcyBQYWdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTdG9yYWdlOwog
CiBjbGFzcyBTdG9yYWdlQXJlYVByb3h5IDogcHVibGljIFN0b3JhZ2VBcmVhIHsKIHB1YmxpYzoK
QEAgLTUxLDEwICs1NywyMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWRC
eVByaXZhdGVCcm93c2luZ0luRnJhbWUoY29uc3QgRnJhbWUqKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKKyAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCisgICAgICAgICAg
ICBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIFdlYktpdDo6V2ViU3RvcmFn
ZUFyZWEqIHNvdXJjZUFyZWEsIGJvb2wgb3JpZ2luYXRlZEluUHJvY2Vzcyk7CisgICAgc3RhdGlj
IHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAorICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBwYWdlR3JvdXBOYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKKyAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgS1VSTCYgcGFnZVVSTCwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNl
JiBzZXNzaW9uTmFtZXNwYWNlLAorICAgICAgICAgICAgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYSog
c291cmNlQXJlYSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsKKwogcHJpdmF0ZToKICAgICB2
b2lkIHN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwg
RnJhbWUqIHNvdXJjZUZyYW1lKTsKICAgICBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoRnJhbWUqKSBj
b25zdDsKIAorICAgIHN0YXRpYyBib29sIElzRXZlbnRTb3VyY2UoU3RvcmFnZSogc3RvcmFnZSwg
V2ViS2l0OjpXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYSk7CisgICAgc3RhdGljIFBhZ2UqIEZp
bmRQYWdlV2l0aFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgcGFnZUdyb3Vw
TmFtZSwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlJiBzZXNzaW9uTmFtZXNwYWNl
KTsKKwogICAgIE93blB0cjxXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhPiBtX3N0b3JhZ2VBcmVhOwog
ICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNw
cAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBA
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdG9yYWdlRXZlbnQuaCIK
IAorLy8gRklYTUU6IGRlbGV0ZSB0aGlzIGFsbW9zdCBvYnNvbGV0ZSBmaWxlIHNvb24KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbDo6U3RvcmFnZUV2
ZW50RGlzcGF0Y2hlckltcGwoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCkBAIC00OSw3ICs1MSw2
IEBAIFN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsOjpTdG9yYWdlRXZlbnQKICAgICBBU1NFUlQo
bV9wYWdlR3JvdXApOwogfQogCi0vLyBGSVhNRTogYWRkIGEgc291cmNlU3RvcmFnZUFyZWEgcGFy
YW1ldGVyIHRvIHRoaXMKIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGw6OmRpc3BhdGNo
U3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
S1VSTCYgdXJsLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKQEAgLTY2LDcgKzY3LDYgQEAgdm9p
ZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbDo6ZGlzcGF0YwogICAgIEhhc2hTZXQ8UGFnZSo+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwYWdlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFn
ZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBpZGVudGlmeSB0aGUgc3JjRnJhbWUgd2hpbGUgaW4gdGhpcyBsb29wIHRvbyBhbmQg
ZXhjbHVkZSBpdCBmcm9tICdmcmFtZXMnLgogICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgICAg
ICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcAkocmV2
aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVz
cGFjZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDQgKzEwMCw5IEBAIHZvaWQgU3Rv
cmFnZU5hbWVzcGFjZVByb3h5OjpzeW5jKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAorYm9vbCBTdG9yYWdlTmFtZXNwYWNlUHJveHk6OklzU2FtZU5hbWVzcGFjZShjb25zdCBXZWJL
aXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2UmIHNlc3Npb25OYW1lc3BhY2UpCit7CisgICAgcmV0dXJu
IG1fc3RvcmFnZU5hbWVzcGFjZS0+SXNTYW1lTmFtZXNwYWNlKHNlc3Npb25OYW1lc3BhY2UpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaAkocmV2aXNpb24gMTE0NjY2KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckFsbE9yaWdpbnNGb3JEZWxldGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jKCk7CiAK
KyAgICBib29sIElzU2FtZU5hbWVzcGFjZShjb25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2UmIHNlc3Npb25OYW1lc3BhY2UpOworCiBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2U+IG1fc3RvcmFnZU5hbWVzcGFjZTsKICAgICBTdG9yYWdlVHlwZSBt
X3N0b3JhZ2VUeXBlOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNwcAkocmV2aXNpb24gMTE0
NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYVByb3h5LmgiCiAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgpAQCAtNDEsNiArNDIsMzUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGV4dGVybiBjb25zdCBjaGFyKiBwYWdlR3JvdXBOYW1lOwogCisvLyBzdGF0aWMKK3ZvaWQgV2Vi
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKKyAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUsCisgICAg
ICAgIGNvbnN0IFdlYlN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlVSTCYgb3JpZ2luLAorICAg
ICAgICBjb25zdCBXZWJVUkwmIHBhZ2VVUkwsIFdlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhLAor
ICAgICAgICBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpCit7CisgICAgUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUob3JpZ2luKTsKKyAgICBXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRj
aExvY2FsU3RvcmFnZUV2ZW50KAorICAgICAgICAgICAgcGFnZUdyb3VwTmFtZSwga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBwYWdlVVJMLAorICAgICAgICAg
ICAgc291cmNlQXJlYSwgb3JpZ2luYXRlZEluUHJvY2Vzcyk7Cit9CisKKy8vIHN0YXRpYwordm9p
ZCBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQo
CisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG9sZFZhbHVl
LAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwmIG9yaWdp
biwKKyAgICAgICAgY29uc3QgV2ViVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJTdG9yYWdlTmFtZXNw
YWNlJiBzZXNzaW9uTmFtZXNwYWNlLAorICAgICAgICBXZWJTdG9yYWdlQXJlYSogc291cmNlQXJl
YSwgIGJvb2wgb3JpZ2luYXRlZEluUHJvY2VzcykKK3sKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShvcmlnaW4pOworICAgIFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OmRpc3BhdGNoU2Vz
c2lvblN0b3JhZ2VFdmVudCgKKyAgICAgICAgICAgIHBhZ2VHcm91cE5hbWUsIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgcGFnZVVSTCwKKyAgICAgICAgICAg
IHNlc3Npb25OYW1lc3BhY2UsIHNvdXJjZUFyZWEsIG9yaWdpbmF0ZWRJblByb2Nlc3MpOworfQor
CisKKy8vIEZJWE1FOiByZW1vdmUgdGhlIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsIGNs
YXNzIHNvb24uCisKIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIqIFdlYlN0b3JhZ2VFdmVudERp
c3BhdGNoZXI6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIG5ldyBXZWJTdG9yYWdlRXZlbnREaXNw
YXRjaGVySW1wbCgpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oCShyZXZpc2lvbiAxMTQ2NjYp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVy
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKKy8vIERFUFJFQ0FURUQgLSB0byBiZSByZW1vdmVkIHdoZW4gcmVtb3ZpbmcgdGhl
IGluc3RhbmNlIG1ldGhvZHMgaW4gdGhlIHB1YmxpYyBhcGkuCiBjbGFzcyBXZWJTdG9yYWdlRXZl
bnREaXNwYXRjaGVySW1wbCA6IHB1YmxpYyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIHsKIHB1
YmxpYzoKICAgICBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbCgpOwotCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBX
ZWJTdHJpbmcmIG9sZFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJTdHJpbmcmIG9yaWdpbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMJiwgYm9vbCBp
c0xvY2FsU3RvcmFnZSk7Ci0KIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OlN0b3JhZ2VF
dmVudERpc3BhdGNoZXJJbXBsPiBtX2V2ZW50RGlzcGF0Y2hlcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137994</attachid>
            <date>2012-04-19 15:37:13 -0700</date>
            <delta_ts>2012-04-23 13:22:57 -0700</delta_ts>
            <desc>events</desc>
            <filename>events.txt</filename>
            <type>text/plain</type>
            <size>22521</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDY2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA0LTE5ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9t
U3RvcmFnZSBldmVudCBoYW5kbGluZyBtb2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzODcKKworICAgICAgICBFdmVudHMgYXJlIGN1cnJlbnRs
eSBoYW5kbGVkIGluY29uc2lzdGVudGx5LiBUaGUgZGlzcGF0Y2ggb2Ygc29tZSBldmVudHMgYXJl
CisgICAgICAgIGluaXRpYXRlZCBmcm9tIHdpdGhpbiB3ZWJraXQvd2ViY29yZSwgdGhlIGRpc3Bh
dGNoIG9mIG90aGVyIGV2ZW50cyBhcmUgaW5pdGlhdGVkCisgICAgICAgIGZyb20gdGhlIG91dHNp
ZGUgdmlhIHRoZSBXZWJLaXQ6OldlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIgaW50ZXJmYWNlLiBU
aGUgZXhpc3RpbmcKKyAgICAgICAgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciBpcyBub3QgZXhw
cmVzc2l2ZSBlbm91Z2ggdG8gaGFuZGxlIGluaXRpYXRpb24gYWxsIAorICAgICAgICBldmVudHMg
ZnJvbSB0aGUgb3V0c2lkZS4gVGhlcmUncyBhIGNodW5rIG9mIG5lYXJseSByZXBsaWNhdGVkIGNv
ZGUgaW4gdGhlcmUKKyAgICAgICAgdGhhdCBzaG91bGRuJ3QgYmUuIFRoZSBleGlzdGluZyBjb2Rl
IGhhcyBzZXZlcmFsIEZJWE1FcyByZWxhdGVkIHRvIG1ha2luZworICAgICAgICB0aGlzIGJldHRl
ci4KKworICAgICAgICBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MgaW4gd2Via2l0L3dlYmNv
cmUgaXMgYWxzbyBibG9ja2luZyBkZXZlbG9wbWVudCBvZiBzb21lCisgICAgICAgIG92ZXJhbGwg
cGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIHRvIGNocm9taXVtJ3MgaW1wbGVtZW50aW9uIG9mIHRo
aXMgZmVhdHVyZSAoZ2V0dGluZworICAgICAgICByaWQgb2Ygc3luYyBpcGNzIGZvciBlYWNoIGFj
Y2VzcyBhbmQgYWRkaW5nIGEgcmVuZGVyZXItc2lkZSBjYWNoaW5nIGxheWVyKS4KKworICAgICAg
ICBUbyBmYWNpbGl0YXRlIHRoZSBwZXJmIGltcHJvdmVtZW50cywgdGhpcyBwYXRjaCBhZGRzIFdl
YktpdCBBUEkgdG9vIGFsbG93IGFsbAorICAgICAgICBEb21TdG9yYWdlIGV2ZW50cyB0byBiZSBp
bml0aWF0ZWQgZnJvbSB0aGUgb3V0c2lkZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZQorICAgICAg
ICB0aGVyZSB3aWxsIGJlIGFuIGFzeW5jIGxhdGVuY3kgYmV0d2VlbiBzZXR0aW5nIGFuIGl0ZW0g
YW5kIHJlY2VpdmluZyB0aGUKKyAgICAgICAgJ29sZFZhbHVlJyBmcm9tIHRoZSBtYWluIGJyb3dz
ZXIgcHJvY2VzcyB3aGljaCBpcyByZXF1aXJlZCB0byByYWlzZSB0aGUKKyAgICAgICAgbXV0YXRp
b24gZXZlbnQuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgYSBtdWx0aS1zaWRlZCBz
ZXF1ZW5jZSBvZiBwYXRjaGVzIHRvIG1ha2UgdGhpcyB0cmFuc2l0aW9uLgorICAgICAgICB3a3Bh
dGNoIDE6IGFkZCB0aGUgbmV3IHdpZGVyIFdlYktpdCBBUEkgYW5kIGltcGwKKyAgICAgICAgY3Jw
YXRjaCAyOiBzdGFydCB1c2luZyB0aGUgbmV3IHdpZGVyIFdlYktpdCBBUEkKKyAgICAgICAgd2tw
YXRjaCAzOiBjbGVhbnVwLCBkZWxldGUgdGhlIG9sZCBXZWJLaXQgQVBJIGFuZCBpbXBsCisgICAg
ICAgIHh4eHh4eHggNC81OiBjbGVhbnVwLCByZW1vdmUgZXh0cmEgcGFyYW1zIGZyb20gbmV3IEFQ
SSB3aG9zZSBvbmx5IHB1cnBvc2Ugd2FzIHRvCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBuZXcgZnVuY3Rpb25hbGl0eSBv
ciBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcHRpb25hbFNlc3Npb25TdG9yYWdlKTogc2ltcGxl
IGlubGluZSBnZXR0ZXIgdG8gYXZvaWQgY29uc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlCisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wdGlvbmFsTG9jYWxTdG9yYWdlKTogZGl0dG8KKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmFy
ZWEpOiBzaW1wbGUgaW5saW5lIGdldHRlcgorCiAyMDEyLTA0LTE5ICBLZW4gQnVjaGFuYW4gIDxr
ZW5yYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUG9zaXRpb25lZCBjaGlsZHJlbiBvZiBydWJ5
IHJ1bnMgbm90IGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBsYXlvdXQKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCiAgICAgICAgIFN0
b3JhZ2UqIHNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICAgICAgU3Rv
cmFnZSogbG9jYWxTdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAgU3RvcmFn
ZSogb3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvblN0b3Jh
Z2UuZ2V0KCk7IH0KKyAgICAgICAgU3RvcmFnZSogb3B0aW9uYWxMb2NhbFN0b3JhZ2UoKSBjb25z
dCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKFFVT1RBKQog
ICAgICAgICBTdG9yYWdlSW5mbyogd2Via2l0U3RvcmFnZUluZm8oKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZS5oCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3Q7CiAKKyAgICAgICAgU3RvcmFnZUFyZWEqIGFyZWEoKSBjb25zdCB7IHJldHVybiBt
X3N0b3JhZ2VBcmVhLmdldCgpOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlKEZy
YW1lKiwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gMTE0NjY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0wNC0xOSAgTWljaGFl
bCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIERv
bVN0b3JhZ2UgZXZlbnQgaGFuZGxpbmcgbW9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzg3CisKKyAgICAgICAgRXZlbnRzIGFyZSBjdXJyZW50
bHkgaGFuZGxlZCBpbmNvbnNpc3RlbnRseS4gVGhlIGRpc3BhdGNoIG9mIHNvbWUgZXZlbnRzIGFy
ZQorICAgICAgICBpbml0aWF0ZWQgZnJvbSB3aXRoaW4gd2Via2l0L3dlYmNvcmUsIHRoZSBkaXNw
YXRjaCBvZiBvdGhlciBldmVudHMgYXJlIGluaXRpYXRlZAorICAgICAgICBmcm9tIHRoZSBvdXRz
aWRlIHZpYSB0aGUgV2ViS2l0OjpXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIGludGVyZmFjZS4g
VGhlIGV4aXN0aW5nCisgICAgICAgIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIgaXMgbm90IGV4
cHJlc3NpdmUgZW5vdWdoIHRvIGhhbmRsZSBpbml0aWF0aW9uIGFsbCAKKyAgICAgICAgZXZlbnRz
IGZyb20gdGhlIG91dHNpZGUuIFRoZXJlJ3MgYSBjaHVuayBvZiBuZWFybHkgcmVwbGljYXRlZCBj
b2RlIGluIHRoZXJlCisgICAgICAgIHRoYXQgc2hvdWxkbid0IGJlLiBUaGUgZXhpc3RpbmcgY29k
ZSBoYXMgc2V2ZXJhbCBGSVhNRXMgcmVsYXRlZCB0byBtYWtpbmcKKyAgICAgICAgdGhpcyBiZXR0
ZXIuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzIGluIHdlYmtpdC93ZWJj
b3JlIGlzIGFsc28gYmxvY2tpbmcgZGV2ZWxvcG1lbnQgb2Ygc29tZQorICAgICAgICBvdmVyYWxs
IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyB0byBjaHJvbWl1bSdzIGltcGxlbWVudGlvbiBvZiB0
aGlzIGZlYXR1cmUgKGdldHRpbmcKKyAgICAgICAgcmlkIG9mIHN5bmMgaXBjcyBmb3IgZWFjaCBh
Y2Nlc3MgYW5kIGFkZGluZyBhIHJlbmRlcmVyLXNpZGUgY2FjaGluZyBsYXllcikuCisKKyAgICAg
ICAgVG8gZmFjaWxpdGF0ZSB0aGUgcGVyZiBpbXByb3ZlbWVudHMsIHRoaXMgcGF0Y2ggYWRkcyBX
ZWJLaXQgQVBJIHRvbyBhbGxvdyBhbGwKKyAgICAgICAgRG9tU3RvcmFnZSBldmVudHMgdG8gYmUg
aW5pdGlhdGVkIGZyb20gdGhlIG91dHNpZGUuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UKKyAgICAg
ICAgdGhlcmUgd2lsbCBiZSBhbiBhc3luYyBsYXRlbmN5IGJldHdlZW4gc2V0dGluZyBhbiBpdGVt
IGFuZCByZWNlaXZpbmcgdGhlCisgICAgICAgICdvbGRWYWx1ZScgZnJvbSB0aGUgbWFpbiBicm93
c2VyIHByb2Nlc3Mgd2hpY2ggaXMgcmVxdWlyZWQgdG8gcmFpc2UgdGhlCisgICAgICAgIG11dGF0
aW9uIGV2ZW50LgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IG9mIGEgbXVsdGktc2lkZWQg
c2VxdWVuY2Ugb2YgcGF0Y2hlcyB0byBtYWtlIHRoaXMgdHJhbnNpdGlvbi4KKyAgICAgICAgd2tw
YXRjaCAxOiBhZGQgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJIGFuZCBpbXBsCisgICAgICAgIGNy
cGF0Y2ggMjogc3RhcnQgdXNpbmcgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJCisgICAgICAgIHdr
cGF0Y2ggMzogY2xlYW51cCwgZGVsZXRlIHRoZSBvbGQgV2ViS2l0IEFQSSBhbmQgaW1wbAorICAg
ICAgICB4eHh4eHh4IDQvNTogY2xlYW51cCwgcmVtb3ZlIGV4dHJhIHBhcmFtcyBmcm9tIG5ldyBB
UEkgd2hvc2Ugb25seSBwdXJwb3NlIHdhcyB0bworICAgICAgICAgICAgICAgICAgICAgYWxsb3cg
dGhlIHRyYW5zaXRpb24KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg6IEFkZCBuZXcgQVBJ
IHRvIGRpc3BhdGNoIGV2ZW50cy4KKyAgICAgICAgKiBwdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFj
ZS5oOiBBZGQgbmV3IEFQSSB0byB0ZXN0IGZvciBuYW1lc3BhY2UgZXF1YWxpdHkuCisgICAgICAg
ICogc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFy
ZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6IGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBuZXcgQVBJCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQpOiAgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBBUEkKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OklzRXZlbnRTb3VyY2UpOiBhIGhlbHBlciBt
ZXRob2QKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OkZpbmRQYWdlV2l0aFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKTogYSBoZWxwZXIgbWV0aG9kCisgICAgICAgICogc3JjL1N0
b3JhZ2VBcmVhUHJveHkuaDoKKyAgICAgICAgKiBzcmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcklt
cGwuY3BwOiBhZGRlZCBhIEZJWE1FIGNvbW1lbnQgdG8gZGVsZXRlIHNvb24KKyAgICAgICAgKiBz
cmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2VQcm94eTo6SXNTYW1lTmFtZXNwYWNlKTogcGx1bWJpbmcgdG8gY2FsbCB0aGUgbmV3
IEFQSQorICAgICAgICAqIHNyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaDoKKyAgICAgICAgKiBz
cmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KTogcGx1
bWJpbmcgdG8gY2FsbCB0aGUgbmV3IGltcGwKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KTogcGx1bWJpbmcgdG8g
Y2FsbCB0aGUgbmV3IGltcGwKKyAgICAgICAgKiBzcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ckltcGwuaDogYWRkZWQgYSBGSVhNRSBjb21tZW50IHRvIGRlbGV0ZSBzb29uCisKIDIwMTItMDQt
MTkgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gQ2FsbCBhdWRpb0hhcmR3YXJlQnVmZmVyU2l6ZSBkaXJlY3RseQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VFdmVudERp
c3BhdGNoZXIuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
NyArMzUsMzAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0b3JhZ2VBcmVh
OworY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKIAotLy8gVGhpcyBp
cyB1c2VkIHRvIGRpc3BhdGNoIHN0b3JhZ2UgZXZlbnRzIHRvIGFsbCBwYWdlcy4KLS8vIEZJWE1F
OiBNYWtlIHRoaXMgKG9yIHNvbWV0aGluZykgd29yayBmb3IgU2Vzc2lvblN0b3JhZ2UhCiBjbGFz
cyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyKiBjcmVhdGUoKTsKKyAgICAvLyBEaXNw
YXRjaCBhIGxvY2FsIHN0b3JhZ2UgZXZlbnQgdG8gYXBwcm9waWF0ZSBkb2N1bWVudHMuCisgICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KAorICAg
ICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUs
CisgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwmIG9y
aWdpbiwKKyAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVybCwgV2ViU3RvcmFnZUFyZWEq
IHNvdXJjZUFyZWEsCisgICAgICAgICAgICBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOwogCi0g
ICAgdmlydHVhbCB+V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpIHsgfQorICAgIC8vIERpc3Bh
dGNoIGEgc2Vzc2lvbiBzdG9yYWdlIGV2ZW50IHRvIGFwcHJvcGlhdGUgZG9jdW1lbnRzLgorICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAor
ICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFs
dWUsCisgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwm
IG9yaWdpbiwKKyAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVybCwgY29uc3QgV2ViU3Rv
cmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSwKKyAgICAgICAgICAgIFdlYlN0b3JhZ2VB
cmVhKiBzb3VyY2VBcmVhLCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOwogCi0gICAgLy8gRGlz
cGF0Y2ggdGhlIGFjdHVhbCBldmVudC4gIERvZXNuJ3QgeWV0IHdvcmsgZm9yIFNlc3Npb25TdG9y
YWdlLgorICAgIC8vIERFUFJFQ0FURUQgLSBUaGUgaW5zdGFuY2UgbWV0aG9kcyBhcmUgZ29pbmcg
YXdheSBzb29uIGluIGZhdm9yCisgICAgLy8gb2YgdGhlIHR3byBzdGF0aWMgZGlzcGF0Y2ggbWV0
aG9kcyBhYm92ZS4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdG9yYWdlRXZlbnREaXNw
YXRjaGVyKiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVy
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFdlYlN0
cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG9sZFZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJT
dHJpbmcmIG9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViVVJMJiB1cmwsIGJvb2wgaXNMb2NhbFN0b3JhZ2UpID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgJKHJl
dmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3Jh
Z2VOYW1lc3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gQ29weSBhIFN0b3JhZ2VOYW1lc3BhY2UuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0
aGUgY2FzZSBvZiBTZXNzaW9uU3RvcmFnZS4KICAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2UqIGNvcHkoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgb2YgdGhlIHR3byBpbnN0YW5j
ZXMgcmVwcmVzZW50IHRoZSBzYW1lIHN0b3JhZ2UgbmFtZXNwYWNlLgorICAgIHZpcnR1YWwgYm9v
bCBJc1NhbWVOYW1lc3BhY2UoY29uc3QgV2ViU3RvcmFnZU5hbWVzcGFjZSYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKICAgICAvLyBERVBSRUNBVEVECiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KCkgeyB9CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZUFyZWFQcm94eS5jcHAJKHJldmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw5
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VQcm94eS5oIgogCiAjaW5jbHVk
ZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUGVybWlzc2lvbkNsaWVudC5oIgpAQCAt
MTIxLDYgKzEyMyw3IEBAIGJvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y29udGFpbnMoY29uc3QgU3QK
ICAgICByZXR1cm4gIWdldEl0ZW0oa2V5LCBmcmFtZSkuaXNOdWxsKCk7CiB9CiAKKy8vIEZJWE1F
OiByZW1vdmUgdGhpcyBtZXRob2QgYW5kIHRoZSBjYWxscyB0byBpdCBmcm9tIG91ciBzZXR0ZXJz
IGFmdGVyIG11bHRpLXNpZGUgcGF0Y2ggbGFuZGluZyBpcyBkb25lLgogLy8gQ29waWVkIGZyb20g
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIG91dCBvZiBuZWNlc3Np
dHkuICBJdCdzIHByb2JhYmx5IGJlc3QgdG8ga2VlcCBpdCBjdXJyZW50Lgogdm9pZCBTdG9yYWdl
QXJlYVByb3h5OjpzdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBl
LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VGcmFtZSkKIHsK
QEAgLTE3Nyw0ICsxODAsODYgQEAgYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9y
YWdlKAogICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXct
PnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dTdG9yYWdlKHdlYkZyYW1lLCBtX3N0b3JhZ2VUeXBl
ID09IExvY2FsU3RvcmFnZSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hM
b2NhbFN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgcGFnZVVSTCwgV2ViS2l0OjpXZWJT
dG9yYWdlQXJlYSogc291cmNlQXJlYSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQoreworICAg
IC8vIEZJWE1FOiBNdWx0aS1zaWRlZCBwYXRjaCBlbmdpbmVlcmluZyBhbGVydCAhCisgICAgLy8g
c3RlcCAxOiB0aGlzIG1ldGhvZCBnZXRzIGRlZmluZWQgYW5kIGltcGxlbWVudGVkIGluIHdlYmtp
dC93ZWJjb3JlIHdpdGggdGhlIGVhcmx5IHJldHVybi4KKyAgICAvLyBzdGVwIDI6IHRoaXMgbWV0
aG9kIHN0YXJ0cyBnZXR0aW5nIGNhbGxlZCBieSBjaHJvbWl1bSBzdGlsbCB3aXRoIHRoZSBlYXJs
eSByZXR1cm4uCisgICAgLy8gc3RlcCAzOiBUaGlzIGNsYXNzJ3Mgc2V0dGVycyBhcmUgbW9kaWZp
ZWQgdG8gbm8gbG9uZ2VyIHJhaXNlIFNlc3Npb25TdG9yYWdlCisgICAgLy8gICAgICAgICBldmVu
dHMgZm9yIGlucHJvY2VzcyBjaGFuZ2VzIGFuZCB0aGlzIGVhcmx5IHJldHVybiBpcyByZW1vdmVk
LgorICAgIGlmIChvcmlnaW5hdGVkSW5Qcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBXZSBuZWVkIHRvIGNvcHkgYWxsIHJlbGV2YW50IGZyYW1lcyBmcm9tIGV2ZXJ5IHBhZ2UgdG8g
YSB2ZWN0b3Igc2luY2Ugc2VuZGluZyB0aGUgZXZlbnQgdG8gb25lIGZyYW1lIG1pZ2h0CisgICAg
Ly8gbXV0YXRlIHRoZSBmcmFtZSB0cmVlIG9mIGFueSBnaXZlbiBwYWdlIGluIHRoZSBncm91cCBv
ciBtdXRhdGUgdGhlIHBhZ2UgZ3JvdXAgaXRzZWxmLgorICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+
ID4gZnJhbWVzOworICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpLT5wYWdlcygpOworICAgIGZvciAoSGFzaFNldDxQYWdl
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gcGFnZXMuZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAg
ICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3Vy
aXR5T3JpZ2luKSAmJiAhSXNFdmVudFNvdXJjZShmcmFtZS0+ZG9tV2luZG93KCktPm9wdGlvbmFs
TG9jYWxTdG9yYWdlKCksIHNvdXJjZUFyZWEpKQorICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBl
bmQoZnJhbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGZyYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICAvLyBGSVhNRTogbWF5YmUgb25seSBy
YWlzZSBpZiB0aGUgd2luZG93IGhhcyBhbiBvbnN0b3JhZ2UgbGlzdGVuZXIgYXR0YWNoZWQgdG8g
YXZvaWQgY3JlYXRpbmcgdGhlIFN0b3JhZ2UgaW5zdGFuY2UuCisgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgICAgICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWVzW2ldLT5kb21XaW5k
b3coKS0+bG9jYWxTdG9yYWdlKGVjKTsKKyAgICAgICAgaWYgKCFlYykKKyAgICAgICAgICAgIGZy
YW1lc1tpXS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50KFN0b3JhZ2VFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBw
YWdlVVJMLCBzdG9yYWdlKSk7CisgICAgfQorfQorCit2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OmRp
c3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBj
b25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2UmIHNlc3Npb25OYW1lc3BhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6Oldl
YlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhLCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpCit7Cisg
ICAgLy8gRklYTUU6IE11bHRpLXNpZGVkIHBhdGNoIGVuZ2luZWVyaW5nIGFsZXJ0ICEKKyAgICAv
LyBzdGVwIDE6IHRoaXMgbWV0aG9kIGdldHMgZGVmaW5lZCBhbmQgaW1wbGVtZW50ZWQgaW4gd2Vi
a2l0L3dlYmNvcmUgd2l0aCB0aGUgZWFybHkgcmV0dXJuLgorICAgIC8vIHN0ZXAgMjogdGhpcyBt
ZXRob2Qgc3RhcnRzIGdldHRpbmcgY2FsbGVkIGJ5IGNocm9taXVtIHN0aWxsIHdpdGggdGhlIGVh
cmx5IHJldHVybi4KKyAgICAvLyBzdGVwIDM6IFRoaXMgY2xhc3MncyBzZXR0ZXJzIGFyZSBtb2Rp
ZmllZCB0byBubyBsb25nZXIgcmFpc2UgU2Vzc2lvblN0b3JhZ2UKKyAgICAvLyAgICAgICAgIGV2
ZW50cyBmb3IgaW5wcm9jZXNzIGNoYW5nZXMgYW5kIHRoaXMgZWFybHkgcmV0dXJuIGlzIHJlbW92
ZWQuCisgICAgaWYgKG9yaWdpbmF0ZWRJblByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAg
IFBhZ2UqIHBhZ2UgPSBGaW5kUGFnZVdpdGhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlR3Jv
dXBOYW1lLCBzZXNzaW9uTmFtZXNwYWNlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+ID4gZnJhbWVzOworICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pICYmICFJc0V2ZW50U291cmNlKGZyYW1l
LT5kb21XaW5kb3coKS0+b3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpLCBzb3VyY2VBcmVhKSkKKyAg
ICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOworICAgIH0KKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgLy8gRklYTUU6IG1h
eWJlIG9ubHkgcmFpc2UgaWYgdGhlIHdpbmRvdyBoYXMgYW4gb25zdG9yYWdlIGxpc3RlbmVyIGF0
dGFjaGVkIHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBTdG9yYWdlIGluc3RhbmNlLgorICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lc1tp
XS0+ZG9tV2luZG93KCktPnNlc3Npb25TdG9yYWdlKGVjKTsKKyAgICAgICAgaWYgKCFlYykKKyAg
ICAgICAgICAgIGZyYW1lc1tpXS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50KFN0b3Jh
Z2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCBwYWdlVVJMLCBzdG9yYWdlKSk7CisgICAgfQorfQorCitib29sIFN0b3JhZ2VB
cmVhUHJveHk6OklzRXZlbnRTb3VyY2UoU3RvcmFnZSogc3RvcmFnZSwgV2ViS2l0OjpXZWJTdG9y
YWdlQXJlYSogc291cmNlQXJlYSkKK3sKKyAgICBpZiAoIXN0b3JhZ2UpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBTdG9yYWdlQXJlYVByb3h5KiBhcmVhUHJveHkgPSBzdGF0aWNfY2FzdDxT
dG9yYWdlQXJlYVByb3h5Kj4oc3RvcmFnZS0+YXJlYSgpKTsKKyAgICByZXR1cm4gYXJlYVByb3h5
LT5tX3N0b3JhZ2VBcmVhID09IHNvdXJjZUFyZWE7Cit9CisKK1BhZ2UqIFN0b3JhZ2VBcmVhUHJv
eHk6OkZpbmRQYWdlV2l0aFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgcGFn
ZUdyb3VwTmFtZSwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlJiBzZXNzaW9uTmFt
ZXNwYWNlKQoreworICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpLT5wYWdlcygpOworICAgIGZvciAoSGFzaFNldDxQYWdl
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gcGFnZXMuZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgY29uc3QgYm9vbCBjcmVhdGVJZk5lZWRlZCA9IHRydWU7CisgICAg
ICAgIFN0b3JhZ2VOYW1lc3BhY2VQcm94eSogcHJveHkgPSBzdGF0aWNfY2FzdDxTdG9yYWdlTmFt
ZXNwYWNlUHJveHkqPigoKml0KS0+c2Vzc2lvblN0b3JhZ2UoY3JlYXRlSWZOZWVkZWQpKTsKKyAg
ICAgICAgaWYgKHByb3h5LT5Jc1NhbWVOYW1lc3BhY2Uoc2Vzc2lvbk5hbWVzcGFjZSkpCisgICAg
ICAgICAgICByZXR1cm4gKml0OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFy
ZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3Jh
Z2VBcmVhUHJveHkuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTgg
QEAKIAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAKLW5hbWVzcGFjZSBXZWJLaXQgeyBjbGFz
cyBXZWJTdG9yYWdlQXJlYTsgfQorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTdG9yYWdl
QXJlYTsKK2NsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRnJhbWU7CitjbGFzcyBLVVJMOworY2xhc3MgUGFnZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOworY2xhc3MgU3RvcmFnZTsKIAogY2xhc3MgU3RvcmFnZUFyZWFQcm94eSA6IHB1
YmxpYyBTdG9yYWdlQXJlYSB7CiBwdWJsaWM6CkBAIC01MSwxMCArNTcsMjEgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkQnlQcml2YXRlQnJvd3NpbmdJbkZyYW1lKGNvbnN0
IEZyYW1lKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQoCisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhZ2VHcm91
cE5hbWUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBT
dHJpbmcmIG5ld1ZhbHVlLAorICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJM
JiBwYWdlVVJMLCBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhLCBib29sIG9yaWdp
bmF0ZWRJblByb2Nlc3MpOworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VF
dmVudCgKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
CisgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIGNvbnN0
IFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSwKKyAgICAgICAg
ICAgIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWEsIGJvb2wgb3JpZ2luYXRlZElu
UHJvY2Vzcyk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0
b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgYm9v
bCBjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKikgY29uc3Q7CiAKKyAgICBzdGF0aWMgYm9vbCBJc0V2
ZW50U291cmNlKFN0b3JhZ2UqLCBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhKTsK
KyAgICBzdGF0aWMgUGFnZSogRmluZFBhZ2VXaXRoU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoY29u
c3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2UmIHNlc3Npb25OYW1lc3BhY2UpOworCiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3RvcmFnZUFy
ZWE+IG1fc3RvcmFnZUFyZWE7CiAgICAgU3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVySW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlckltcGwuY3BwCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VFdmVudC5oIgogCisvLyBGSVhNRTogZGVsZXRlIHRoaXMgYWxtb3N0IG9ic29s
ZXRlIGZpbGUgc29vbgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXJJbXBsOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbChjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSkKQEAgLTQ5LDcgKzUxLDYgQEAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGw6OlN0b3Jh
Z2VFdmVudAogICAgIEFTU0VSVChtX3BhZ2VHcm91cCk7CiB9CiAKLS8vIEZJWE1FOiBhZGQgYSBz
b3VyY2VTdG9yYWdlQXJlYSBwYXJhbWV0ZXIgdG8gdGhpcwogdm9pZCBTdG9yYWdlRXZlbnREaXNw
YXRjaGVySW1wbDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgb2xkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBLVVJMJiB1cmwsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQpA
QCAtNjYsNyArNjcsNiBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsOjpkaXNwYXRj
CiAgICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBhZ2VzLmVuZCgpOwog
ICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCkt
Pm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IGlkZW50aWZ5IHRoZSBzcmNGcmFtZSB3aGlsZSBp
biB0aGlzIGxvb3AgdG9vIGFuZCBleGNsdWRlIGl0IGZyb20gJ2ZyYW1lcycuCiAgICAgICAgICAg
ICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3VyaXR5
T3JpZ2luKSkKICAgICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlTmFt
ZXNwYWNlUHJveHkuY3BwCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NCArMTAwLDkgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlUHJveHk6OnN5bmMoKQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCitib29sIFN0b3JhZ2VOYW1lc3BhY2VQcm94eTo6SXNTYW1l
TmFtZXNwYWNlKGNvbnN0IFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVz
cGFjZSkKK3sKKyAgICByZXR1cm4gbV9zdG9yYWdlTmFtZXNwYWNlLT5Jc1NhbWVOYW1lc3BhY2Uo
c2Vzc2lvbk5hbWVzcGFjZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5o
CShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdl
TmFtZXNwYWNlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsT3JpZ2luc0ZvckRlbGV0aW9uKCk7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmMoKTsKIAorICAgIGJvb2wgSXNTYW1lTmFtZXNwYWNlKGNvbnN0IFdlYktp
dDo6V2ViU3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSk7CisKIHByaXZhdGU6CiAg
ICAgT3duUHRyPFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZT4gbV9zdG9yYWdlTmFtZXNwYWNl
OwogICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcklt
cGwuY3BwCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUHJveHkuaCIKIAogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00MSw2ICs0MiwzNSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogZXh0ZXJuIGNvbnN0IGNoYXIqIHBhZ2VHcm91cE5hbWU7CiAK
Ky8vIHN0YXRpYwordm9pZCBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3Ry
aW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3Qg
V2ViVVJMJiBvcmlnaW4sCisgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVSTCwgV2ViU3RvcmFn
ZUFyZWEqIHNvdXJjZUFyZWEsCisgICAgICAgIGJvb2wgb3JpZ2luYXRlZEluUHJvY2VzcykKK3sK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4pOworICAgIFdlYkNvcmU6OlN0b3Jh
Z2VBcmVhUHJveHk6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoCisgICAgICAgICAgICBwYWdl
R3JvdXBOYW1lLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCks
IHBhZ2VVUkwsCisgICAgICAgICAgICBzb3VyY2VBcmVhLCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsK
K30KKworLy8gc3RhdGljCit2b2lkIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudCgKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0
IFdlYlN0cmluZyYgb2xkVmFsdWUsCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFdlYlVSTCYgb3JpZ2luLAorICAgICAgICBjb25zdCBXZWJVUkwmIHBhZ2VVUkwsIGNv
bnN0IFdlYlN0b3JhZ2VOYW1lc3BhY2UmIHNlc3Npb25OYW1lc3BhY2UsCisgICAgICAgIFdlYlN0
b3JhZ2VBcmVhKiBzb3VyY2VBcmVhLCAgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQoreworICAg
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7CisgICAgV2ViQ29yZTo6U3RvcmFnZUFy
ZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAorICAgICAgICAgICAgcGFnZUdy
b3VwTmFtZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBw
YWdlVVJMLAorICAgICAgICAgICAgc2Vzc2lvbk5hbWVzcGFjZSwgc291cmNlQXJlYSwgb3JpZ2lu
YXRlZEluUHJvY2Vzcyk7Cit9CisKKworLy8gRklYTUU6IHJlbW92ZSB0aGUgV2ViU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlckltcGwgY2xhc3Mgc29vbi4KKwogV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ciogV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gbmV3
IFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBs
LmgJKHJldmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0
b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE0ICszNywx
MyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gREVQUkVDQVRFRCAtIHRvIGJlIHJlbW92
ZWQgd2hlbiByZW1vdmluZyB0aGUgaW5zdGFuY2UgbWV0aG9kcyBpbiB0aGUgcHVibGljIGFwaS4K
IGNsYXNzIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsIDogcHVibGljIFdlYlN0b3JhZ2VF
dmVudERpc3BhdGNoZXIgewogcHVibGljOgogICAgIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJ
bXBsKCk7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgV2Vi
U3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdl
YlN0cmluZyYgb3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJVUkwmLCBib29sIGlzTG9jYWxTdG9yYWdlKTsKLQogcHJpdmF0ZToKICAgICBPd25Q
dHI8V2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGw+IG1fZXZlbnREaXNwYXRjaGVy
OwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138410</attachid>
            <date>2012-04-23 13:22:57 -0700</date>
            <delta_ts>2012-04-23 13:26:19 -0700</delta_ts>
            <desc>events</desc>
            <filename>events2.txt</filename>
            <type>text/plain</type>
            <size>20842</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDY2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTE5ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9t
U3RvcmFnZSBldmVudCBoYW5kbGluZyBtb2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzODcKKworICAgICAgICBBZGQgYSBmZXcgc2ltcGxlIGlu
bGluZSBnZXR0ZXJzIHRvIGFsbG93IHRoZSBzb3VyY2UgRG9jdW1lbnQgb2YgYSBzdG9yYWdlCisg
ICAgICAgIGV2ZW50IHRvIGJlIGlkZW50aWZpZWQgZ2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBzb3Vy
Y2UgU3RvcmFnZUFyZWEgc28gdGhvc2UKKyAgICAgICAgRG9jdW1lbnRzIGNhbiBiZSBleGNsdWRl
ZCBieSB0aGUgZXZlbnQgZGlzcGF0Y2hpbmcgbG9naWMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBuZXcgZnVuY3Rpb25h
bGl0eSBvciBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5o
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcHRpb25hbFNlc3Npb25TdG9yYWdlKTog
c2ltcGxlIGlubGluZSBnZXR0ZXIgdG8gYXZvaWQgY29uc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxl
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wdGlvbmFsTG9jYWxTdG9yYWdlKTogZGl0
dG8KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEpOiBzaW1wbGUgaW5saW5lIGdldHRlcgorCiAyMDEyLTA0LTE5ICBLZW4gQnVjaGFu
YW4gIDxrZW5yYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUG9zaXRpb25lZCBjaGlsZHJlbiBv
ZiBydWJ5IHJ1bnMgbm90IGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBsYXlvdXQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDYgKzM1NCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCiAgICAg
ICAgIFN0b3JhZ2UqIHNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICAg
ICAgU3RvcmFnZSogbG9jYWxTdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAg
U3RvcmFnZSogb3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
blN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgU3RvcmFnZSogb3B0aW9uYWxMb2NhbFN0b3JhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKFFV
T1RBKQogICAgICAgICBTdG9yYWdlSW5mbyogd2Via2l0U3RvcmFnZUluZm8oKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSkgY29uc3Q7CiAKKyAgICAgICAgU3RvcmFnZUFyZWEqIGFyZWEoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2VBcmVhLmdldCgpOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBTdG9y
YWdlKEZyYW1lKiwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4pOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0NjY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNC0xOSAg
TWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21p
dW1dIERvbVN0b3JhZ2UgZXZlbnQgaGFuZGxpbmcgbW9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzg3CisKKyAgICAgICAgRXZlbnRzIGFyZSBj
dXJyZW50bHkgaGFuZGxlZCBpbmNvbnNpc3RlbnRseS4gVGhlIGRpc3BhdGNoIG9mIHNvbWUgZXZl
bnRzIGFyZQorICAgICAgICBpbml0aWF0ZWQgZnJvbSB3aXRoaW4gd2Via2l0L3dlYmNvcmUsIHRo
ZSBkaXNwYXRjaCBvZiBvdGhlciBldmVudHMgYXJlIGluaXRpYXRlZAorICAgICAgICBmcm9tIHRo
ZSBvdXRzaWRlIHZpYSB0aGUgV2ViS2l0OjpXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIGludGVy
ZmFjZS4gVGhlIGV4aXN0aW5nCisgICAgICAgIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIgaXMg
bm90IGV4cHJlc3NpdmUgZW5vdWdoIHRvIGhhbmRsZSBpbml0aWF0aW9uIGFsbCAKKyAgICAgICAg
ZXZlbnRzIGZyb20gdGhlIG91dHNpZGUuIFRoZXJlJ3MgYSBjaHVuayBvZiBuZWFybHkgcmVwbGlj
YXRlZCBjb2RlIGluIHRoZXJlCisgICAgICAgIHRoYXQgc2hvdWxkbid0IGJlLiBUaGUgZXhpc3Rp
bmcgY29kZSBoYXMgc2V2ZXJhbCBGSVhNRXMgcmVsYXRlZCB0byBtYWtpbmcKKyAgICAgICAgdGhp
cyBiZXR0ZXIuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzIGluIHdlYmtp
dC93ZWJjb3JlIGlzIGFsc28gYmxvY2tpbmcgZGV2ZWxvcG1lbnQgb2Ygc29tZQorICAgICAgICBv
dmVyYWxsIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyB0byBjaHJvbWl1bSdzIGltcGxlbWVudGlv
biBvZiB0aGlzIGZlYXR1cmUgKGdldHRpbmcKKyAgICAgICAgcmlkIG9mIHN5bmMgaXBjcyBmb3Ig
ZWFjaCBhY2Nlc3MgYW5kIGFkZGluZyBhIHJlbmRlcmVyLXNpZGUgY2FjaGluZyBsYXllcikuCisK
KyAgICAgICAgVG8gZmFjaWxpdGF0ZSB0aGUgcGVyZiBpbXByb3ZlbWVudHMsIHRoaXMgcGF0Y2gg
YWRkcyBXZWJLaXQgQVBJIHRvbyBhbGxvdyBhbGwKKyAgICAgICAgRG9tU3RvcmFnZSBldmVudHMg
dG8gYmUgaW5pdGlhdGVkIGZyb20gdGhlIG91dHNpZGUuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UK
KyAgICAgICAgdGhlcmUgd2lsbCBiZSBhbiBhc3luYyBsYXRlbmN5IGJldHdlZW4gc2V0dGluZyBh
biBpdGVtIGFuZCByZWNlaXZpbmcgdGhlCisgICAgICAgICdvbGRWYWx1ZScgZnJvbSB0aGUgbWFp
biBicm93c2VyIHByb2Nlc3Mgd2hpY2ggaXMgcmVxdWlyZWQgdG8gcmFpc2UgdGhlCisgICAgICAg
IG11dGF0aW9uIGV2ZW50LgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IG9mIGEgbXVsdGkt
c2lkZWQgc2VxdWVuY2Ugb2YgcGF0Y2hlcyB0byBtYWtlIHRoaXMgdHJhbnNpdGlvbi4KKyAgICAg
ICAgd2twYXRjaCAxOiBhZGQgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJIGFuZCBpbXBsCisgICAg
ICAgIGNycGF0Y2ggMjogc3RhcnQgdXNpbmcgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJCisgICAg
ICAgIHdrcGF0Y2ggMzogY2xlYW51cCwgZGVsZXRlIHRoZSBvbGQgV2ViS2l0IEFQSSBhbmQgaW1w
bAorICAgICAgICB4eHh4eHh4IDQvNTogY2xlYW51cCwgcmVtb3ZlIGV4dHJhIHBhcmFtcyBmcm9t
IG5ldyBBUEkgd2hvc2Ugb25seSBwdXJwb3NlIHdhcyB0byBhbGxvdyB0aGUgdHJhbnNpdGlvbgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGlj
L1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDogQWRkIG5ldyBBUEkgdG8gZGlzcGF0Y2ggZXZl
bnRzLgorICAgICAgICAqIHB1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmg6IEFkZCBuZXcgQVBJ
IHRvIHRlc3QgZm9yIG5hbWVzcGFjZSBlcXVhbGl0eS4KKyAgICAgICAgKiBzcmMvU3RvcmFnZUFy
ZWFQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRj
aExvY2FsU3RvcmFnZUV2ZW50KTogaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBBUEkKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVu
dCk6ICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEFQSQorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUFyZWFQcm94eTo6SXNFdmVudFNvdXJjZSk6IGEgaGVscGVyIG1ldGhvZAorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6RmluZFBhZ2VXaXRoU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UpOiBhIGhlbHBlciBtZXRob2QKKyAgICAgICAgKiBzcmMvU3RvcmFnZUFyZWFQcm94eS5o
OgorICAgICAgICAqIHNyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHA6IGFkZGVkIGEg
RklYTUUgY29tbWVudCB0byBkZWxldGUgc29vbgorICAgICAgICAqIHNyYy9TdG9yYWdlTmFtZXNw
YWNlUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3h5OjpJ
c1NhbWVOYW1lc3BhY2UpOiBwbHVtYmluZyB0byBjYWxsIHRoZSBuZXcgQVBJCisgICAgICAgICog
c3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJTdG9yYWdlRXZl
bnREaXNwYXRjaGVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQpOiBwbHVtYmluZyB0byBjYWxsIHRo
ZSBuZXcgaW1wbAorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQpOiBwbHVtYmluZyB0byBjYWxsIHRoZSBuZXcgaW1w
bAorICAgICAgICAqIHNyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oOiBhZGRlZCBh
IEZJWE1FIGNvbW1lbnQgdG8gZGVsZXRlIHNvb24KKwogMjAxMi0wNC0xOSAgTWFyayBQaWxncmlt
ICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDYWxsIGF1ZGlv
SGFyZHdhcmVCdWZmZXJTaXplIGRpcmVjdGx5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCShyZXZp
c2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE3ICszNSwzMCBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViU3RvcmFnZUFyZWE7CitjbGFzcyBXZWJTdG9y
YWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViVVJMOwogCi0vLyBUaGlzIGlzIHVzZWQgdG8gZGlzcGF0
Y2ggc3RvcmFnZSBldmVudHMgdG8gYWxsIHBhZ2VzLgotLy8gRklYTUU6IE1ha2UgdGhpcyAob3Ig
c29tZXRoaW5nKSB3b3JrIGZvciBTZXNzaW9uU3RvcmFnZSEKIGNsYXNzIFdlYlN0b3JhZ2VFdmVu
dERpc3BhdGNoZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIqIGNyZWF0ZSgpOworICAgIC8vIERpc3BhdGNoIGEgbG9jYWwgc3Rv
cmFnZSBldmVudCB0byBhcHByb3BpYXRlIGRvY3VtZW50cy4KKyAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoCisgICAgICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgICAgIGNv
bnN0IFdlYlN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlVSTCYgb3JpZ2luLAorICAgICAgICAg
ICAgY29uc3QgV2ViVVJMJiBwYWdlVXJsLCBXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3Rh
bmNlLAorICAgICAgICAgICAgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsKIAotICAgIHZpcnR1
YWwgfldlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIoKSB7IH0KKyAgICAvLyBEaXNwYXRjaCBhIHNl
c3Npb24gc3RvcmFnZSBldmVudCB0byBhcHByb3BpYXRlIGRvY3VtZW50cy4KKyAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCgKKyAgICAgICAg
ICAgIGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG9sZFZhbHVlLAorICAg
ICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViVVJMJiBvcmlnaW4s
CisgICAgICAgICAgICBjb25zdCBXZWJVUkwmIHBhZ2VVcmwsIGNvbnN0IFdlYlN0b3JhZ2VOYW1l
c3BhY2UmLAorICAgICAgICAgICAgV2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwg
Ym9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsKIAotICAgIC8vIERpc3BhdGNoIHRoZSBhY3R1YWwg
ZXZlbnQuICBEb2Vzbid0IHlldCB3b3JrIGZvciBTZXNzaW9uU3RvcmFnZS4KKyAgICAvLyBERVBS
RUNBVEVEIC0gVGhlIGluc3RhbmNlIG1ldGhvZHMgYXJlIGdvaW5nIGF3YXkgc29vbiBpbiBmYXZv
cgorICAgIC8vIG9mIHRoZSB0d28gc3RhdGljIGRpc3BhdGNoIG1ldGhvZHMgYWJvdmUuCisgICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciogY3JlYXRlKCk7
CisgICAgdmlydHVhbCB+V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3Qg
V2ViU3RyaW5nJiBvbGRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgdXJsLCBi
b29sIGlzTG9jYWxTdG9yYWdlKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiAxMTQ2NjYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDkgQEAgcHVibGljOgogICAgIC8vIENvcHkgYSBTdG9y
YWdlTmFtZXNwYWNlLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIGNhc2Ugb2YgU2Vzc2lv
blN0b3JhZ2UuCiAgICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjb3B5KCkgPSAwOwog
CisgICAgLy8gUmV0dXJucyB0cnVlIG9mIHRoZSB0d28gaW5zdGFuY2VzIHJlcHJlc2VudCB0aGUg
c2FtZSBzdG9yYWdlIG5hbWVzcGFjZS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lTmFtZXNwYWNl
KGNvbnN0IFdlYlN0b3JhZ2VOYW1lc3BhY2UmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgLy8gREVQUkVDQVRFRAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIHsgfQogfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCShy
ZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJl
YVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsOSBAQAogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlN0b3JhZ2UuaCIKICNpbmNsdWRlICJTdG9yYWdlRXZlbnQuaCIKKyNpbmNs
dWRlICJTdG9yYWdlTmFtZXNwYWNlUHJveHkuaCIKIAogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5o
IgogI2luY2x1ZGUgIldlYlBlcm1pc3Npb25DbGllbnQuaCIKQEAgLTEyMSw2ICsxMjMsNyBAQCBi
b29sIFN0b3JhZ2VBcmVhUHJveHk6OmNvbnRhaW5zKGNvbnN0IFN0CiAgICAgcmV0dXJuICFnZXRJ
dGVtKGtleSwgZnJhbWUpLmlzTnVsbCgpOwogfQogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgbWV0
aG9kIGFuZCB0aGUgY2FsbHMgdG8gaXQgZnJvbSBvdXIgc2V0dGVycyBhZnRlciBtdWx0aS1zaWRl
IHBhdGNoIGxhbmRpbmcgaXMgZG9uZS4KIC8vIENvcGllZCBmcm9tIFdlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBvdXQgb2YgbmVjZXNzaXR5LiAgSXQncyBwcm9iYWJs
eSBiZXN0IHRvIGtlZXAgaXQgY3VycmVudC4KIHZvaWQgU3RvcmFnZUFyZWFQcm94eTo6c3RvcmFn
ZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBT
dHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luLCBGcmFtZSogc291cmNlRnJhbWUpCiB7CkBAIC0xNzcsNCArMTgwLDc2
IEBAIGJvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y2FuQWNjZXNzU3RvcmFnZSgKICAgICByZXR1cm4g
IXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50
KCktPmFsbG93U3RvcmFnZSh3ZWJGcmFtZSwgbV9zdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2Up
OwogfQogCit2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJj
ZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQoreworICAgIC8vIEZJWE1F
OiBNdWx0aS1zaWRlZCBwYXRjaCBlbmdpbmVlcmluZyBhbGVydCAhCisgICAgLy8gc3RlcCAxOiB0
aGlzIG1ldGhvZCBnZXRzIGRlZmluZWQgYW5kIGltcGxlbWVudGVkIGluIHdlYmtpdC93ZWJjb3Jl
IHdpdGggdGhlIGVhcmx5IHJldHVybi4KKyAgICAvLyBzdGVwIDI6IHRoaXMgbWV0aG9kIHN0YXJ0
cyBnZXR0aW5nIGNhbGxlZCBieSBjaHJvbWl1bSBzdGlsbCB3aXRoIHRoZSBlYXJseSByZXR1cm4u
CisgICAgLy8gc3RlcCAzOiBUaGlzIGNsYXNzJ3Mgc2V0dGVycyBhcmUgbW9kaWZpZWQgdG8gbm8g
bG9uZ2VyIHJhaXNlIFNlc3Npb25TdG9yYWdlCisgICAgLy8gICAgICAgICBldmVudHMgZm9yIGlu
cHJvY2VzcyBjaGFuZ2VzIGFuZCB0aGlzIGVhcmx5IHJldHVybiBpcyByZW1vdmVkLgorICAgIGlm
IChvcmlnaW5hdGVkSW5Qcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBIYXNo
U2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXBOYW1lKS0+
cGFnZXMoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBh
Z2VzLmJlZ2luKCk7IGl0ICE9IHBhZ2VzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0eU9yaWdpbikgJiYgIWlzRXZlbnRTb3Vy
Y2UoZnJhbWUtPmRvbVdpbmRvdygpLT5vcHRpb25hbExvY2FsU3RvcmFnZSgpLCBzb3VyY2VBcmVh
SW5zdGFuY2UpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1heWJlIG9ubHkgcmFpc2Ug
aWYgdGhlIHdpbmRvdyBoYXMgYW4gb25zdG9yYWdlIGxpc3RlbmVyIGF0dGFjaGVkIHRvIGF2b2lk
IGNyZWF0aW5nIHRoZSBTdG9yYWdlIGluc3RhbmNlLgorICAgICAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgICAgICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZS0+
ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZShlYyk7CisgICAgICAgICAgICAgICAgaWYgKCFlYykK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVXaW5kb3dFdmVu
dChTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50LCBrZXksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSwgcGFnZVVSTCwgc3RvcmFnZSkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OmRpc3BhdGNoU2Vzc2lv
blN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2UmIHNlc3Npb25OYW1lc3BhY2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVh
KiBzb3VyY2VBcmVhSW5zdGFuY2UsIGJvb2wgb3JpZ2luYXRlZEluUHJvY2VzcykKK3sKKyAgICAv
LyBGSVhNRTogTXVsdGktc2lkZWQgcGF0Y2ggZW5naW5lZXJpbmcgYWxlcnQgIQorICAgIC8vIHN0
ZXAgMTogdGhpcyBtZXRob2QgZ2V0cyBkZWZpbmVkIGFuZCBpbXBsZW1lbnRlZCBpbiB3ZWJraXQv
d2ViY29yZSB3aXRoIHRoZSBlYXJseSByZXR1cm4uCisgICAgLy8gc3RlcCAyOiB0aGlzIG1ldGhv
ZCBzdGFydHMgZ2V0dGluZyBjYWxsZWQgYnkgY2hyb21pdW0gc3RpbGwgd2l0aCB0aGUgZWFybHkg
cmV0dXJuLgorICAgIC8vIHN0ZXAgMzogVGhpcyBjbGFzcydzIHNldHRlcnMgYXJlIG1vZGlmaWVk
IHRvIG5vIGxvbmdlciByYWlzZSBTZXNzaW9uU3RvcmFnZQorICAgIC8vICAgICAgICAgZXZlbnRz
IGZvciBpbnByb2Nlc3MgY2hhbmdlcyBhbmQgdGhpcyBlYXJseSByZXR1cm4gaXMgcmVtb3ZlZC4K
KyAgICBpZiAob3JpZ2luYXRlZEluUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFn
ZSogcGFnZSA9IGZpbmRQYWdlV2l0aFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VHcm91cE5h
bWUsIHNlc3Npb25OYW1lc3BhY2UpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0eU9yaWdpbikgJiYgIWlz
RXZlbnRTb3VyY2UoZnJhbWUtPmRvbVdpbmRvdygpLT5vcHRpb25hbFNlc3Npb25TdG9yYWdlKCks
IHNvdXJjZUFyZWFJbnN0YW5jZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5
IHJhaXNlIGlmIHRoZSB3aW5kb3cgaGFzIGFuIG9uc3RvcmFnZSBsaXN0ZW5lciBhdHRhY2hlZCB0
byBhdm9pZCBjcmVhdGluZyB0aGUgU3RvcmFnZSBpbnN0YW5jZS4KKyAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lLT5k
b21XaW5kb3coKS0+c2Vzc2lvblN0b3JhZ2UoZWMpOworICAgICAgICAgICAgaWYgKCFlYykKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50KFN0b3Jh
Z2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCBwYWdlVVJMLCBzdG9yYWdlKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jv
b2wgU3RvcmFnZUFyZWFQcm94eTo6aXNFdmVudFNvdXJjZShTdG9yYWdlKiBzdG9yYWdlLCBXZWJL
aXQ6OldlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhSW5zdGFuY2UpCit7CisgICAgaWYgKCFzdG9y
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3RvcmFnZUFyZWFQcm94eSogYXJlYVBy
b3h5ID0gc3RhdGljX2Nhc3Q8U3RvcmFnZUFyZWFQcm94eSo+KHN0b3JhZ2UtPmFyZWEoKSk7Cisg
ICAgcmV0dXJuIGFyZWFQcm94eS0+bV9zdG9yYWdlQXJlYSA9PSBzb3VyY2VBcmVhSW5zdGFuY2U7
Cit9CisKK1BhZ2UqIFN0b3JhZ2VBcmVhUHJveHk6OmZpbmRQYWdlV2l0aFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgY29uc3QgV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlJiBzZXNzaW9uTmFtZXNwYWNlKQoreworICAgIGNvbnN0IEhhc2hTZXQ8
UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpLT5wYWdl
cygpOworICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMu
YmVnaW4oKTsgaXQgIT0gcGFnZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgY29uc3QgYm9vbCBj
cmVhdGVJZk5lZWRlZCA9IHRydWU7CisgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2VQcm94eSogcHJv
eHkgPSBzdGF0aWNfY2FzdDxTdG9yYWdlTmFtZXNwYWNlUHJveHkqPigoKml0KS0+c2Vzc2lvblN0
b3JhZ2UoY3JlYXRlSWZOZWVkZWQpKTsKKyAgICAgICAgaWYgKHByb3h5LT5pc1NhbWVOYW1lc3Bh
Y2Uoc2Vzc2lvbk5hbWVzcGFjZSkpCisgICAgICAgICAgICByZXR1cm4gKml0OworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAkocmV2aXNpb24gMTE0NjY2
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTggQEAKIAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgi
CiAKLW5hbWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJTdG9yYWdlQXJlYTsgfQorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJTdG9yYWdlQXJlYTsKK2NsYXNzIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2U7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CitjbGFzcyBLVVJM
OworY2xhc3MgUGFnZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU3RvcmFnZTsKIAog
Y2xhc3MgU3RvcmFnZUFyZWFQcm94eSA6IHB1YmxpYyBTdG9yYWdlQXJlYSB7CiBwdWJsaWM6CkBA
IC01MSwxMCArNTcsMjEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkQnlQ
cml2YXRlQnJvd3NpbmdJbkZyYW1lKGNvbnN0IEZyYW1lKikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoCisgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAorICAgICAgICAgICAg
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBXZWJLaXQ6OldlYlN0b3JhZ2VB
cmVhKiBzb3VyY2VBcmVhSW5zdGFuY2UsIGJvb2wgb3JpZ2luYXRlZEluUHJvY2Vzcyk7CisgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAorICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKKyAgICAgICAgICAgIFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgS1VSTCYgcGFnZVVSTCwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFt
ZXNwYWNlJiwKKyAgICAgICAgICAgIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJ
bnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsKKwogcHJpdmF0ZToKICAgICB2b2lk
IHN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgRnJh
bWUqIHNvdXJjZUZyYW1lKTsKICAgICBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoRnJhbWUqKSBjb25z
dDsKIAorICAgIHN0YXRpYyBib29sIGlzRXZlbnRTb3VyY2UoU3RvcmFnZSosIFdlYktpdDo6V2Vi
U3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSk7CisgICAgc3RhdGljIFBhZ2UqIGZpbmRQ
YWdlV2l0aFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFt
ZSwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlJik7CisKICAgICBPd25QdHI8V2Vi
S2l0OjpXZWJTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKICAgICBTdG9yYWdlVHlwZSBtX3N0
b3JhZ2VUeXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VF
dmVudERpc3BhdGNoZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAJKHJldmlzaW9uIDExNDY2NikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAKKy8vIEZJWE1FOiBkZWxldGUg
dGhpcyBhbG1vc3Qgb2Jzb2xldGUgZmlsZSBzb29uCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGw6OlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsKGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lKQpAQCAtNDksNyArNTEsNiBAQCBTdG9yYWdlRXZlbnREaXNw
YXRjaGVySW1wbDo6U3RvcmFnZUV2ZW50CiAgICAgQVNTRVJUKG1fcGFnZUdyb3VwKTsKIH0KIAot
Ly8gRklYTUU6IGFkZCBhIHNvdXJjZVN0b3JhZ2VBcmVhIHBhcmFtZXRlciB0byB0aGlzCiB2b2lk
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEtVUkwmIHVybCwgU3RvcmFnZVR5
cGUgc3RvcmFnZVR5cGUpCkBAIC02Niw3ICs2Nyw2IEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlckltcGw6OmRpc3BhdGMKICAgICBIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gcGFnZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBwYWdlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogaWRlbnRpZnkgdGhl
IHNyY0ZyYW1lIHdoaWxlIGluIHRoaXMgbG9vcCB0b28gYW5kIGV4Y2x1ZGUgaXQgZnJvbSAnZnJh
bWVzJy4KICAgICAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQo
ZnJhbWUpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9y
YWdlTmFtZXNwYWNlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5jcHAJKHJldmlzaW9uIDExNDY2NikKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw0ICsxMDAsOSBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VQcm94eTo6
c3luYygpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wgU3RvcmFnZU5hbWVz
cGFjZVByb3h5Ojppc1NhbWVOYW1lc3BhY2UoY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNw
YWNlJiBzZXNzaW9uTmFtZXNwYWNlKQoreworICAgIHJldHVybiBtX3N0b3JhZ2VOYW1lc3BhY2Ut
PmlzU2FtZU5hbWVzcGFjZShzZXNzaW9uTmFtZXNwYWNlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFj
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZU5hbWVzcGFjZVByb3h5LmgJKHJldmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxPcmlnaW5zRm9yRGVs
ZXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luYygpOwogCisgICAgYm9vbCBpc1NhbWVOYW1l
c3BhY2UoY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlJik7CisKIHByaXZhdGU6CiAg
ICAgT3duUHRyPFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZT4gbV9zdG9yYWdlTmFtZXNwYWNl
OwogICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcklt
cGwuY3BwCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUHJveHkuaCIKIAogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00MSw2ICs0MiwzNSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogZXh0ZXJuIGNvbnN0IGNoYXIqIHBhZ2VHcm91cE5hbWU7CiAK
Ky8vIHN0YXRpYwordm9pZCBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3Ry
aW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3Qg
V2ViVVJMJiBvcmlnaW4sCisgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVSTCwgV2ViU3RvcmFn
ZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwKKyAgICAgICAgYm9vbCBvcmlnaW5hdGVkSW5Qcm9j
ZXNzKQoreworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7CisgICAgV2ViQ29y
ZTo6U3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKKyAgICAgICAg
ICAgIHBhZ2VHcm91cE5hbWUsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzZWN1cml0eU9yaWdp
bi5nZXQoKSwgcGFnZVVSTCwKKyAgICAgICAgICAgIHNvdXJjZUFyZWFJbnN0YW5jZSwgb3JpZ2lu
YXRlZEluUHJvY2Vzcyk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBXZWJTdG9yYWdlRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoCisgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG9sZFZhbHVlLAorICAgICAgICBjb25zdCBXZWJT
dHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwmIG9yaWdpbiwKKyAgICAgICAgY29uc3QgV2Vi
VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJTdG9yYWdlTmFtZXNwYWNlJiBzZXNzaW9uTmFtZXNwYWNl
LAorICAgICAgICBXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNlLCBib29sIG9yaWdp
bmF0ZWRJblByb2Nlc3MpCit7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luKTsK
KyAgICBXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZl
bnQoCisgICAgICAgICAgICBwYWdlR3JvdXBOYW1lLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
c2VjdXJpdHlPcmlnaW4uZ2V0KCksIHBhZ2VVUkwsCisgICAgICAgICAgICBzZXNzaW9uTmFtZXNw
YWNlLCBzb3VyY2VBcmVhSW5zdGFuY2UsIG9yaWdpbmF0ZWRJblByb2Nlc3MpOworfQorCisKKy8v
IEZJWE1FOiByZW1vdmUgdGhlIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsIGNsYXNzIHNv
b24uCisKIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIqIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNo
ZXI6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIG5ldyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVy
SW1wbCgpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTMgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKKy8vIERFUFJFQ0FURUQgLSB0byBiZSByZW1vdmVkIHdoZW4gcmVtb3ZpbmcgdGhlIGluc3Rh
bmNlIG1ldGhvZHMgaW4gdGhlIHB1YmxpYyBhcGkuCiBjbGFzcyBXZWJTdG9yYWdlRXZlbnREaXNw
YXRjaGVySW1wbCA6IHB1YmxpYyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
ICAgICBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbCgpOwotCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJTdHJp
bmcmIG9sZFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJTdHJpbmcmIG9yaWdpbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMJiwgYm9vbCBpc0xvY2Fs
U3RvcmFnZSk7Ci0KIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OlN0b3JhZ2VFdmVudERp
c3BhdGNoZXJJbXBsPiBtX2V2ZW50RGlzcGF0Y2hlcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138411</attachid>
            <date>2012-04-23 13:26:19 -0700</date>
            <delta_ts>2012-04-23 16:54:04 -0700</delta_ts>
            <desc>events</desc>
            <filename>events2.txt</filename>
            <type>text/plain</type>
            <size>20819</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDY2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTE5ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9t
U3RvcmFnZSBldmVudCBoYW5kbGluZyBtb2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzODcKKworICAgICAgICBBZGQgYSBmZXcgc2ltcGxlIGlu
bGluZSBnZXR0ZXJzIHRvIGFsbG93IHRoZSBzb3VyY2UgRG9jdW1lbnQgb2YgYSBzdG9yYWdlCisg
ICAgICAgIGV2ZW50IHRvIGJlIGlkZW50aWZpZWQgZ2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBzb3Vy
Y2UgU3RvcmFnZUFyZWEgc28gdGhvc2UKKyAgICAgICAgRG9jdW1lbnRzIGNhbiBiZSBleGNsdWRl
ZCBieSB0aGUgZXZlbnQgZGlzcGF0Y2hpbmcgbG9naWMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBuZXcgZnVuY3Rpb25h
bGl0eSBvciBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5o
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcHRpb25hbFNlc3Npb25TdG9yYWdlKTog
c2ltcGxlIGlubGluZSBnZXR0ZXIgdG8gYXZvaWQgY29uc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxl
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wdGlvbmFsTG9jYWxTdG9yYWdlKTogZGl0
dG8KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEpOiBzaW1wbGUgaW5saW5lIGdldHRlcgorCiAyMDEyLTA0LTE5ICBLZW4gQnVjaGFu
YW4gIDxrZW5yYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUG9zaXRpb25lZCBjaGlsZHJlbiBv
ZiBydWJ5IHJ1bnMgbm90IGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBsYXlvdXQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDYgKzM1NCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCiAgICAg
ICAgIFN0b3JhZ2UqIHNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICAg
ICAgU3RvcmFnZSogbG9jYWxTdG9yYWdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAg
U3RvcmFnZSogb3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
blN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgU3RvcmFnZSogb3B0aW9uYWxMb2NhbFN0b3JhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKFFV
T1RBKQogICAgICAgICBTdG9yYWdlSW5mbyogd2Via2l0U3RvcmFnZUluZm8oKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCShyZXZpc2lvbiAxMTQ2NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSkgY29uc3Q7CiAKKyAgICAgICAgU3RvcmFnZUFyZWEqIGFyZWEoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2VBcmVhLmdldCgpOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBTdG9y
YWdlKEZyYW1lKiwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4pOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0NjY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNC0xOSAg
TWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21p
dW1dIERvbVN0b3JhZ2UgZXZlbnQgaGFuZGxpbmcgbW9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzg3CisKKyAgICAgICAgRXZlbnRzIGFyZSBj
dXJyZW50bHkgaGFuZGxlZCBpbmNvbnNpc3RlbnRseS4gVGhlIGRpc3BhdGNoIG9mIHNvbWUgZXZl
bnRzIGFyZQorICAgICAgICBpbml0aWF0ZWQgZnJvbSB3aXRoaW4gd2Via2l0L3dlYmNvcmUsIHRo
ZSBkaXNwYXRjaCBvZiBvdGhlciBldmVudHMgYXJlIGluaXRpYXRlZAorICAgICAgICBmcm9tIHRo
ZSBvdXRzaWRlIHZpYSB0aGUgV2ViS2l0OjpXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIGludGVy
ZmFjZS4gVGhlIGV4aXN0aW5nCisgICAgICAgIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIgaXMg
bm90IGV4cHJlc3NpdmUgZW5vdWdoIHRvIGhhbmRsZSBpbml0aWF0aW9uIGFsbCAKKyAgICAgICAg
ZXZlbnRzIGZyb20gdGhlIG91dHNpZGUuIFRoZXJlJ3MgYSBjaHVuayBvZiBuZWFybHkgcmVwbGlj
YXRlZCBjb2RlIGluIHRoZXJlCisgICAgICAgIHRoYXQgc2hvdWxkbid0IGJlLiBUaGUgZXhpc3Rp
bmcgY29kZSBoYXMgc2V2ZXJhbCBGSVhNRXMgcmVsYXRlZCB0byBtYWtpbmcKKyAgICAgICAgdGhp
cyBiZXR0ZXIuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzIGluIHdlYmtp
dC93ZWJjb3JlIGlzIGFsc28gYmxvY2tpbmcgZGV2ZWxvcG1lbnQgb2Ygc29tZQorICAgICAgICBv
dmVyYWxsIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyB0byBjaHJvbWl1bSdzIGltcGxlbWVudGlv
biBvZiB0aGlzIGZlYXR1cmUgKGdldHRpbmcKKyAgICAgICAgcmlkIG9mIHN5bmMgaXBjcyBmb3Ig
ZWFjaCBhY2Nlc3MgYW5kIGFkZGluZyBhIHJlbmRlcmVyLXNpZGUgY2FjaGluZyBsYXllcikuCisK
KyAgICAgICAgVG8gZmFjaWxpdGF0ZSB0aGUgcGVyZiBpbXByb3ZlbWVudHMsIHRoaXMgcGF0Y2gg
YWRkcyBXZWJLaXQgQVBJIHRvIGFsbG93IGFsbAorICAgICAgICBEb21TdG9yYWdlIGV2ZW50cyB0
byBiZSBpbml0aWF0ZWQgZnJvbSB0aGUgb3V0c2lkZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZQor
ICAgICAgICB0aGVyZSB3aWxsIGJlIGFuIGFzeW5jIGxhdGVuY3kgYmV0d2VlbiBzZXR0aW5nIGFu
IGl0ZW0gYW5kIHJlY2VpdmluZyB0aGUKKyAgICAgICAgJ29sZFZhbHVlJyBmcm9tIHRoZSBtYWlu
IGJyb3dzZXIgcHJvY2VzcyB3aGljaCBpcyByZXF1aXJlZCB0byByYWlzZSB0aGUKKyAgICAgICAg
bXV0YXRpb24gZXZlbnQuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgYSBtdWx0aS1z
aWRlZCBzZXF1ZW5jZSBvZiBwYXRjaGVzIHRvIG1ha2UgdGhpcyB0cmFuc2l0aW9uLgorICAgICAg
ICB3a3BhdGNoIDE6IGFkZCB0aGUgbmV3IHdpZGVyIFdlYktpdCBBUEkgYW5kIGltcGwKKyAgICAg
ICAgY3JwYXRjaCAyOiBzdGFydCB1c2luZyB0aGUgbmV3IHdpZGVyIFdlYktpdCBBUEkKKyAgICAg
ICAgd2twYXRjaCAzOiBjbGVhbnVwLCBkZWxldGUgdGhlIG9sZCBXZWJLaXQgQVBJIGFuZCBpbXBs
CisgICAgICAgIHh4eHh4eHggNC81OiBjbGVhbnVwLCByZW1vdmUgZXh0cmEgcGFyYW1zIGZyb20g
bmV3IEFQSSB3aG9zZSBvbmx5IHB1cnBvc2Ugd2FzIHRvIGFsbG93IHRoZSB0cmFuc2l0aW9uCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOiBBZGQgbmV3IEFQSSB0byBkaXNwYXRjaCBldmVu
dHMuCisgICAgICAgICogcHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaDogQWRkIG5ldyBBUEkg
dG8gdGVzdCBmb3IgbmFtZXNwYWNlIGVxdWFsaXR5LgorICAgICAgICAqIHNyYy9TdG9yYWdlQXJl
YVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OmRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnQpOiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEFQSQorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
KTogIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgQVBJCisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlQXJlYVByb3h5OjpJc0V2ZW50U291cmNlKTogYSBoZWxwZXIgbWV0aG9kCisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpGaW5kUGFnZVdpdGhTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk6IGEgaGVscGVyIG1ldGhvZAorICAgICAgICAqIHNyYy9TdG9yYWdlQXJlYVByb3h5Lmg6
CisgICAgICAgICogc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNwcDogYWRkZWQgYSBG
SVhNRSBjb21tZW50IHRvIGRlbGV0ZSBzb29uCisgICAgICAgICogc3JjL1N0b3JhZ2VOYW1lc3Bh
Y2VQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJveHk6Oklz
U2FtZU5hbWVzcGFjZSk6IHBsdW1iaW5nIHRvIGNhbGwgdGhlIG5ldyBBUEkKKyAgICAgICAgKiBz
cmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYlN0b3JhZ2VFdmVu
dERpc3BhdGNoZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6IHBsdW1iaW5nIHRvIGNhbGwgdGhl
IG5ldyBpbXBsCisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCk6IHBsdW1iaW5nIHRvIGNhbGwgdGhlIG5ldyBpbXBs
CisgICAgICAgICogc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmg6IGFkZGVkIGEg
RklYTUUgY29tbWVudCB0byBkZWxldGUgc29vbgorCiAyMDEyLTA0LTE5ICBNYXJrIFBpbGdyaW0g
IDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIENhbGwgYXVkaW9I
YXJkd2FyZUJ1ZmZlclNpemUgZGlyZWN0bHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgJKHJldmlz
aW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VF
dmVudERpc3BhdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTcgKzM1LDMwIEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTdG9yYWdlQXJlYTsKK2NsYXNzIFdlYlN0b3Jh
Z2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJVUkw7CiAKLS8vIFRoaXMgaXMgdXNlZCB0byBkaXNwYXRj
aCBzdG9yYWdlIGV2ZW50cyB0byBhbGwgcGFnZXMuCi0vLyBGSVhNRTogTWFrZSB0aGlzIChvciBz
b21ldGhpbmcpIHdvcmsgZm9yIFNlc3Npb25TdG9yYWdlIQogY2xhc3MgV2ViU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlciogY3JlYXRlKCk7CisgICAgLy8gRGlzcGF0Y2ggYSBsb2NhbCBzdG9y
YWdlIGV2ZW50IHRvIGFwcHJvcGlhdGUgZG9jdW1lbnRzLgorICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKKyAgICAgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG9sZFZhbHVlLAorICAgICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViVVJMJiBvcmlnaW4sCisgICAgICAgICAg
ICBjb25zdCBXZWJVUkwmIHBhZ2VVcmwsIFdlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhSW5zdGFu
Y2UsCisgICAgICAgICAgICBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOwogCi0gICAgdmlydHVh
bCB+V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpIHsgfQorICAgIC8vIERpc3BhdGNoIGEgc2Vz
c2lvbiBzdG9yYWdlIGV2ZW50IHRvIGFwcHJvcGlhdGUgZG9jdW1lbnRzLgorICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAorICAgICAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUsCisgICAg
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwmIG9yaWdpbiwK
KyAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVybCwgY29uc3QgV2ViU3RvcmFnZU5hbWVz
cGFjZSYsCisgICAgICAgICAgICBXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNlLCBi
b29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOwogCi0gICAgLy8gRGlzcGF0Y2ggdGhlIGFjdHVhbCBl
dmVudC4gIERvZXNuJ3QgeWV0IHdvcmsgZm9yIFNlc3Npb25TdG9yYWdlLgorICAgIC8vIERFUFJF
Q0FURUQgLSBUaGUgaW5zdGFuY2UgbWV0aG9kcyBhcmUgZ29pbmcgYXdheSBzb29uIGluIGZhdm9y
CisgICAgLy8gb2YgdGhlIHR3byBzdGF0aWMgZGlzcGF0Y2ggbWV0aG9kcyBhYm92ZS4KKyAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyKiBjcmVhdGUoKTsK
KyAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBX
ZWJTdHJpbmcmIG9sZFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJTdHJpbmcmIG9yaWdpbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMJiB1cmwsIGJv
b2wgaXNMb2NhbFN0b3JhZ2UpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgJKHJldmlzaW9uIDExNDY2NikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ29weSBhIFN0b3Jh
Z2VOYW1lc3BhY2UuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0aGUgY2FzZSBvZiBTZXNzaW9u
U3RvcmFnZS4KICAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3BhY2UqIGNvcHkoKSA9IDA7CiAK
KyAgICAvLyBSZXR1cm5zIHRydWUgb2YgdGhlIHR3byBpbnN0YW5jZXMgcmVwcmVzZW50IHRoZSBz
YW1lIHN0b3JhZ2UgbmFtZXNwYWNlLgorICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVOYW1lc3BhY2Uo
Y29uc3QgV2ViU3RvcmFnZU5hbWVzcGFjZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAg
ICAvLyBERVBSRUNBVEVECiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyB9CiB9OwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAJKHJl
dmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVh
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw5IEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgorI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VQcm94eS5oIgogCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgi
CiAjaW5jbHVkZSAiV2ViUGVybWlzc2lvbkNsaWVudC5oIgpAQCAtMTIxLDYgKzEyMyw3IEBAIGJv
b2wgU3RvcmFnZUFyZWFQcm94eTo6Y29udGFpbnMoY29uc3QgU3QKICAgICByZXR1cm4gIWdldEl0
ZW0oa2V5LCBmcmFtZSkuaXNOdWxsKCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyBtZXRo
b2QgYW5kIHRoZSBjYWxscyB0byBpdCBmcm9tIG91ciBzZXR0ZXJzIGFmdGVyIG11bHRpLXNpZGUg
cGF0Y2ggbGFuZGluZyBpcyBkb25lLgogLy8gQ29waWVkIGZyb20gV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIG91dCBvZiBuZWNlc3NpdHkuICBJdCdzIHByb2JhYmx5
IGJlc3QgdG8ga2VlcCBpdCBjdXJyZW50Lgogdm9pZCBTdG9yYWdlQXJlYVByb3h5OjpzdG9yYWdl
RXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VGcmFtZSkKIHsKQEAgLTE3Nyw0ICsxODAsNzYg
QEAgYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKAogICAgIHJldHVybiAh
d2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQo
KS0+YWxsb3dTdG9yYWdlKHdlYkZyYW1lLCBtX3N0b3JhZ2VUeXBlID09IExvY2FsU3RvcmFnZSk7
CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChj
b25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgS1VSTCYgcGFnZVVSTCwgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYSogc291cmNl
QXJlYUluc3RhbmNlLCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpCit7CisgICAgLy8gRklYTUU6
IE11bHRpLXNpZGVkIHBhdGNoIGVuZ2luZWVyaW5nIGFsZXJ0ICEKKyAgICAvLyBzdGVwIDE6IHRo
aXMgbWV0aG9kIGdldHMgZGVmaW5lZCBhbmQgaW1wbGVtZW50ZWQgaW4gd2Via2l0L3dlYmNvcmUg
d2l0aCB0aGUgZWFybHkgcmV0dXJuLgorICAgIC8vIHN0ZXAgMjogdGhpcyBtZXRob2Qgc3RhcnRz
IGdldHRpbmcgY2FsbGVkIGJ5IGNocm9taXVtIHN0aWxsIHdpdGggdGhlIGVhcmx5IHJldHVybi4K
KyAgICAvLyBzdGVwIDM6IFRoaXMgY2xhc3MncyBzZXR0ZXJzIGFyZSBtb2RpZmllZCB0byBubyBs
b25nZXIgcmFpc2UgU2Vzc2lvblN0b3JhZ2UKKyAgICAvLyAgICAgICAgIGV2ZW50cyBmb3IgaW5w
cm9jZXNzIGNoYW5nZXMgYW5kIHRoaXMgZWFybHkgcmV0dXJuIGlzIHJlbW92ZWQuCisgICAgaWYg
KG9yaWdpbmF0ZWRJblByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IEhhc2hT
ZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpLT5w
YWdlcygpOworICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFn
ZXMuYmVnaW4oKTsgaXQgIT0gcGFnZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSAmJiAhaXNFdmVudFNvdXJj
ZShmcmFtZS0+ZG9tV2luZG93KCktPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCksIHNvdXJjZUFyZWFJ
bnN0YW5jZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWF5YmUgb25seSByYWlzZSBp
ZiB0aGUgd2luZG93IGhhcyBhbiBvbnN0b3JhZ2UgbGlzdGVuZXIgYXR0YWNoZWQgdG8gYXZvaWQg
Y3JlYXRpbmcgdGhlIFN0b3JhZ2UgaW5zdGFuY2UuCisgICAgICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgICAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lLT5k
b21XaW5kb3coKS0+bG9jYWxTdG9yYWdlKGVjKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVjKQor
ICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50
KFN0b3JhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBwYWdlVVJMLCBzdG9yYWdlKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9u
U3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYktpdDo6
V2ViU3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEq
IHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQoreworICAgIC8v
IEZJWE1FOiBNdWx0aS1zaWRlZCBwYXRjaCBlbmdpbmVlcmluZyBhbGVydCAhCisgICAgLy8gc3Rl
cCAxOiB0aGlzIG1ldGhvZCBnZXRzIGRlZmluZWQgYW5kIGltcGxlbWVudGVkIGluIHdlYmtpdC93
ZWJjb3JlIHdpdGggdGhlIGVhcmx5IHJldHVybi4KKyAgICAvLyBzdGVwIDI6IHRoaXMgbWV0aG9k
IHN0YXJ0cyBnZXR0aW5nIGNhbGxlZCBieSBjaHJvbWl1bSBzdGlsbCB3aXRoIHRoZSBlYXJseSBy
ZXR1cm4uCisgICAgLy8gc3RlcCAzOiBUaGlzIGNsYXNzJ3Mgc2V0dGVycyBhcmUgbW9kaWZpZWQg
dG8gbm8gbG9uZ2VyIHJhaXNlIFNlc3Npb25TdG9yYWdlCisgICAgLy8gICAgICAgICBldmVudHMg
Zm9yIGlucHJvY2VzcyBjaGFuZ2VzIGFuZCB0aGlzIGVhcmx5IHJldHVybiBpcyByZW1vdmVkLgor
ICAgIGlmIChvcmlnaW5hdGVkSW5Qcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdl
KiBwYWdlID0gZmluZFBhZ2VXaXRoU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUdyb3VwTmFt
ZSwgc2Vzc2lvbk5hbWVzcGFjZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSAmJiAhaXNF
dmVudFNvdXJjZShmcmFtZS0+ZG9tV2luZG93KCktPm9wdGlvbmFsU2Vzc2lvblN0b3JhZ2UoKSwg
c291cmNlQXJlYUluc3RhbmNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IG1heWJlIG9ubHkg
cmFpc2UgaWYgdGhlIHdpbmRvdyBoYXMgYW4gb25zdG9yYWdlIGxpc3RlbmVyIGF0dGFjaGVkIHRv
IGF2b2lkIGNyZWF0aW5nIHRoZSBTdG9yYWdlIGluc3RhbmNlLgorICAgICAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAgICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWUtPmRv
bVdpbmRvdygpLT5zZXNzaW9uU3RvcmFnZShlYyk7CisgICAgICAgICAgICBpZiAoIWVjKQorICAg
ICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFn
ZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwg
bmV3VmFsdWUsIHBhZ2VVUkwsIHN0b3JhZ2UpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9v
bCBTdG9yYWdlQXJlYVByb3h5Ojppc0V2ZW50U291cmNlKFN0b3JhZ2UqIHN0b3JhZ2UsIFdlYktp
dDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSkKK3sKKyAgICBpZiAoIXN0b3Jh
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdG9yYWdlQXJlYVByb3h5KiBhcmVhUHJv
eHkgPSBzdGF0aWNfY2FzdDxTdG9yYWdlQXJlYVByb3h5Kj4oc3RvcmFnZS0+YXJlYSgpKTsKKyAg
ICByZXR1cm4gYXJlYVByb3h5LT5tX3N0b3JhZ2VBcmVhID09IHNvdXJjZUFyZWFJbnN0YW5jZTsK
K30KKworUGFnZSogU3RvcmFnZUFyZWFQcm94eTo6ZmluZFBhZ2VXaXRoU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0
b3JhZ2VOYW1lc3BhY2UmIHNlc3Npb25OYW1lc3BhY2UpCit7CisgICAgY29uc3QgSGFzaFNldDxQ
YWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwTmFtZSktPnBhZ2Vz
KCk7CisgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5i
ZWdpbigpOyBpdCAhPSBwYWdlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBjb25zdCBib29sIGNy
ZWF0ZUlmTmVlZGVkID0gdHJ1ZTsKKyAgICAgICAgU3RvcmFnZU5hbWVzcGFjZVByb3h5KiBwcm94
eSA9IHN0YXRpY19jYXN0PFN0b3JhZ2VOYW1lc3BhY2VQcm94eSo+KCgqaXQpLT5zZXNzaW9uU3Rv
cmFnZShjcmVhdGVJZk5lZWRlZCkpOworICAgICAgICBpZiAocHJveHktPmlzU2FtZU5hbWVzcGFj
ZShzZXNzaW9uTmFtZXNwYWNlKSkKKyAgICAgICAgICAgIHJldHVybiAqaXQ7CisgICAgfQorICAg
IHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCShyZXZpc2lvbiAxMTQ2NjYp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEyICsyOCwxOCBAQAogCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIK
IAotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYlN0b3JhZ2VBcmVhOyB9CituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYlN0b3JhZ2VBcmVhOworY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFj
ZTsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKK2NsYXNzIEtVUkw7
CitjbGFzcyBQYWdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTdG9yYWdlOwogCiBj
bGFzcyBTdG9yYWdlQXJlYVByb3h5IDogcHVibGljIFN0b3JhZ2VBcmVhIHsKIHB1YmxpYzoKQEAg
LTUxLDEwICs1NywyMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWRCeVBy
aXZhdGVCcm93c2luZ0luRnJhbWUoY29uc3QgRnJhbWUqKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKKyAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCisgICAgICAgICAgICBT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIFdlYktpdDo6V2ViU3RvcmFnZUFy
ZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsKKyAgICBz
dGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoCisgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAorICAgICAgICAgICAgU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1l
c3BhY2UmLAorICAgICAgICAgICAgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUlu
c3RhbmNlLCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOworCiBwcml2YXRlOgogICAgIHZvaWQg
c3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBGcmFt
ZSogc291cmNlRnJhbWUpOwogICAgIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShGcmFtZSopIGNvbnN0
OwogCisgICAgc3RhdGljIGJvb2wgaXNFdmVudFNvdXJjZShTdG9yYWdlKiwgV2ViS2l0OjpXZWJT
dG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNlKTsKKyAgICBzdGF0aWMgUGFnZSogZmluZFBh
Z2VXaXRoU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1l
LCBjb25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2UmKTsKKwogICAgIE93blB0cjxXZWJL
aXQ6OldlYlN0b3JhZ2VBcmVhPiBtX3N0b3JhZ2VBcmVhOwogICAgIFN0b3JhZ2VUeXBlIG1fc3Rv
cmFnZVR5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNwcAkocmV2aXNpb24gMTE0NjY2KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTdG9yYWdlRXZlbnQuaCIKIAorLy8gRklYTUU6IGRlbGV0ZSB0
aGlzIGFsbW9zdCBvYnNvbGV0ZSBmaWxlIHNvb24KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
dG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbDo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwoY29u
c3QgU3RyaW5nJiBncm91cE5hbWUpCkBAIC00OSw3ICs1MSw2IEBAIFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXJJbXBsOjpTdG9yYWdlRXZlbnQKICAgICBBU1NFUlQobV9wYWdlR3JvdXApOwogfQogCi0v
LyBGSVhNRTogYWRkIGEgc291cmNlU3RvcmFnZUFyZWEgcGFyYW1ldGVyIHRvIHRoaXMKIHZvaWQg
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGw6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgdXJsLCBTdG9yYWdlVHlw
ZSBzdG9yYWdlVHlwZSkKQEAgLTY2LDcgKzY3LDYgQEAgdm9pZCBTdG9yYWdlRXZlbnREaXNwYXRj
aGVySW1wbDo6ZGlzcGF0YwogICAgIEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBwYWdlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBpZGVudGlmeSB0aGUg
c3JjRnJhbWUgd2hpbGUgaW4gdGhpcyBsb29wIHRvbyBhbmQgZXhjbHVkZSBpdCBmcm9tICdmcmFt
ZXMnLgogICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LT5lcXVhbChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChm
cmFtZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3Jh
Z2VOYW1lc3BhY2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcAkocmV2aXNpb24gMTE0NjY2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDQgKzEwMCw5IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3h5Ojpz
eW5jKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBTdG9yYWdlTmFtZXNw
YWNlUHJveHk6OmlzU2FtZU5hbWVzcGFjZShjb25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2UmIHNlc3Npb25OYW1lc3BhY2UpCit7CisgICAgcmV0dXJuIG1fc3RvcmFnZU5hbWVzcGFjZS0+
aXNTYW1lTmFtZXNwYWNlKHNlc3Npb25OYW1lc3BhY2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlTmFtZXNwYWNl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdl
TmFtZXNwYWNlUHJveHkuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsbE9yaWdpbnNGb3JEZWxl
dGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jKCk7CiAKKyAgICBib29sIGlzU2FtZU5hbWVz
cGFjZShjb25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2UmKTsKKwogcHJpdmF0ZToKICAg
ICBPd25QdHI8V2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlPiBtX3N0b3JhZ2VOYW1lc3BhY2U7
CiAgICAgU3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1w
bC5jcHAJKHJldmlzaW9uIDExNDY2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiU3RvcmFnZUFyZWFQcm94eS5oIgogCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQxLDYgKzQyLDMzIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBleHRlcm4gY29uc3QgY2hhciogcGFnZUdyb3VwTmFtZTsKIAor
dm9pZCBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50
KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiBvbGRWYWx1
ZSwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViVVJMJiBvcmln
aW4sCisgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVSTCwgV2ViU3RvcmFnZUFyZWEqIHNvdXJj
ZUFyZWFJbnN0YW5jZSwKKyAgICAgICAgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQoreworICAg
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7CisgICAgV2ViQ29yZTo6U3RvcmFnZUFy
ZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKKyAgICAgICAgICAgIHBhZ2VHcm91
cE5hbWUsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgcGFn
ZVVSTCwKKyAgICAgICAgICAgIHNvdXJjZUFyZWFJbnN0YW5jZSwgb3JpZ2luYXRlZEluUHJvY2Vz
cyk7Cit9CisKK3ZvaWQgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9u
U3RvcmFnZUV2ZW50KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3Ry
aW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3Qg
V2ViVVJMJiBvcmlnaW4sCisgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVSTCwgY29uc3QgV2Vi
U3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSwKKyAgICAgICAgV2ViU3RvcmFnZUFy
ZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQoreworICAg
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7CisgICAgV2ViQ29yZTo6U3RvcmFnZUFy
ZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAorICAgICAgICAgICAgcGFnZUdy
b3VwTmFtZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBw
YWdlVVJMLAorICAgICAgICAgICAgc2Vzc2lvbk5hbWVzcGFjZSwgc291cmNlQXJlYUluc3RhbmNl
LCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsKK30KKworCisvLyBGSVhNRTogcmVtb3ZlIHRoZSBXZWJT
dG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbCBjbGFzcyBzb29uLgorCiBXZWJTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyKiBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpjcmVhdGUoKQogewogICAgIHJl
dHVybiBuZXcgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlckltcGwuaAkocmV2aXNpb24gMTE0NjY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
MTQgKzM3LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBERVBSRUNBVEVEIC0gdG8g
YmUgcmVtb3ZlZCB3aGVuIHJlbW92aW5nIHRoZSBpbnN0YW5jZSBtZXRob2RzIGluIHRoZSBwdWJs
aWMgYXBpLgogY2xhc3MgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwgOiBwdWJsaWMgV2Vi
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgV2ViU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlckltcGwoKTsKLQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChj
b25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiBvbGRWYWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwg
Y29uc3QgV2ViU3RyaW5nJiBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlVSTCYsIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOwotCiBwcml2YXRlOgog
ICAgIE93blB0cjxXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbD4gbV9ldmVudERp
c3BhdGNoZXI7CiB9Owo=
</data>
<flag name="review"
          id="143761"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138460</attachid>
            <date>2012-04-23 16:54:04 -0700</date>
            <delta_ts>2012-04-27 19:18:14 -0700</delta_ts>
            <desc>events - patch for landing</desc>
            <filename>events3.txt</filename>
            <type>text/plain</type>
            <size>20669</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTE5ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9t
U3RvcmFnZSBldmVudCBoYW5kbGluZyBtb2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzODcKKworICAgICAgICBBZGQgYSBmZXcgc2ltcGxlIGlu
bGluZSBnZXR0ZXJzIHRvIGFsbG93IHRoZSBzb3VyY2UgRG9jdW1lbnQgb2YgYSBzdG9yYWdlCisg
ICAgICAgIGV2ZW50IHRvIGJlIGlkZW50aWZpZWQgZ2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBzb3Vy
Y2UgU3RvcmFnZUFyZWEgc28gdGhvc2UKKyAgICAgICAgRG9jdW1lbnRzIGNhbiBiZSBleGNsdWRl
ZCBieSB0aGUgZXZlbnQgZGlzcGF0Y2hpbmcgbG9naWMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gbmV3IGZ1bmN0aW9u
YWxpdHkgb3IgY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6b3B0aW9uYWxTZXNzaW9uU3RvcmFnZSk6
IHNpbXBsZSBpbmxpbmUgZ2V0dGVyIHRvIGF2b2lkIGNvbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJs
ZQorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcHRpb25hbExvY2FsU3RvcmFnZSk6IGRp
dHRvCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlOjphcmVhKTogc2ltcGxlIGlubGluZSBnZXR0ZXIKKwogMjAxMi0wNC0yMyAgRW1pbCBBIEVr
bHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gUmVuZGVySW5saW5l
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBmb3IgUHJpbnRQcmV2aWV3CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDExNDk0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw2ICszNTQsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEhUTUwgNSBrZXkvdmFsdWUgc3RvcmFnZQogICAg
ICAgICBTdG9yYWdlKiBzZXNzaW9uU3RvcmFnZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAg
ICAgIFN0b3JhZ2UqIGxvY2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgICAg
IFN0b3JhZ2UqIG9wdGlvbmFsU2Vzc2lvblN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b25TdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFN0b3JhZ2UqIG9wdGlvbmFsTG9jYWxTdG9yYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2UuZ2V0KCk7IH0KIAogI2lmIEVOQUJMRShR
VU9UQSkKICAgICAgICAgU3RvcmFnZUluZm8qIHdlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAkocmV2aXNpb24gMTE0OTQ4KQorKysgU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3Ry
aW5nJiBrZXkpIGNvbnN0OwogCisgICAgICAgIFN0b3JhZ2VBcmVhKiBhcmVhKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3Rv
cmFnZShGcmFtZSosIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+KTsKIApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDk0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDQtMTkg
IE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBEb21TdG9yYWdlIGV2ZW50IGhhbmRsaW5nIG1vZHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM4NworCisgICAgICAgIEV2ZW50cyBhcmUg
Y3VycmVudGx5IGhhbmRsZWQgaW5jb25zaXN0ZW50bHkuIFRoZSBkaXNwYXRjaCBvZiBzb21lIGV2
ZW50cyBhcmUKKyAgICAgICAgaW5pdGlhdGVkIGZyb20gd2l0aGluIHdlYmtpdC93ZWJjb3JlLCB0
aGUgZGlzcGF0Y2ggb2Ygb3RoZXIgZXZlbnRzIGFyZSBpbml0aWF0ZWQKKyAgICAgICAgZnJvbSB0
aGUgb3V0c2lkZSB2aWEgdGhlIFdlYktpdDo6V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciBpbnRl
cmZhY2UuIFRoZSBleGlzdGluZworICAgICAgICBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIGlz
IG5vdCBleHByZXNzaXZlIGVub3VnaCB0byBoYW5kbGUgaW5pdGlhdGlvbiBhbGwgCisgICAgICAg
IGV2ZW50cyBmcm9tIHRoZSBvdXRzaWRlLiBUaGVyZSdzIGEgY2h1bmsgb2YgbmVhcmx5IHJlcGxp
Y2F0ZWQgY29kZSBpbiB0aGVyZQorICAgICAgICB0aGF0IHNob3VsZG4ndCBiZS4gVGhlIGV4aXN0
aW5nIGNvZGUgaGFzIHNldmVyYWwgRklYTUVzIHJlbGF0ZWQgdG8gbWFraW5nCisgICAgICAgIHRo
aXMgYmV0dGVyLgorCisgICAgICAgIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaW5ncyBpbiB3ZWJr
aXQvd2ViY29yZSBpcyBhbHNvIGJsb2NraW5nIGRldmVsb3BtZW50IG9mIHNvbWUKKyAgICAgICAg
b3ZlcmFsbCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgdG8gY2hyb21pdW0ncyBpbXBsZW1lbnRp
b24gb2YgdGhpcyBmZWF0dXJlIChnZXR0aW5nCisgICAgICAgIHJpZCBvZiBzeW5jIGlwY3MgZm9y
IGVhY2ggYWNjZXNzIGFuZCBhZGRpbmcgYSByZW5kZXJlci1zaWRlIGNhY2hpbmcgbGF5ZXIpLgor
CisgICAgICAgIFRvIGZhY2lsaXRhdGUgdGhlIHBlcmYgaW1wcm92ZW1lbnRzLCB0aGlzIHBhdGNo
IGFkZHMgV2ViS2l0IEFQSSB0byBhbGxvdyBhbGwKKyAgICAgICAgRG9tU3RvcmFnZSBldmVudHMg
dG8gYmUgaW5pdGlhdGVkIGZyb20gdGhlIG91dHNpZGUuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UK
KyAgICAgICAgdGhlcmUgd2lsbCBiZSBhbiBhc3luYyBsYXRlbmN5IGJldHdlZW4gc2V0dGluZyBh
biBpdGVtIGFuZCByZWNlaXZpbmcgdGhlCisgICAgICAgICdvbGRWYWx1ZScgZnJvbSB0aGUgbWFp
biBicm93c2VyIHByb2Nlc3Mgd2hpY2ggaXMgcmVxdWlyZWQgdG8gcmFpc2UgdGhlCisgICAgICAg
IG11dGF0aW9uIGV2ZW50LgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IG9mIGEgbXVsdGkt
c2lkZWQgc2VxdWVuY2Ugb2YgcGF0Y2hlcyB0byBtYWtlIHRoaXMgdHJhbnNpdGlvbi4KKyAgICAg
ICAgd2twYXRjaCAxOiBhZGQgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJIGFuZCBpbXBsCisgICAg
ICAgIGNycGF0Y2ggMjogc3RhcnQgdXNpbmcgdGhlIG5ldyB3aWRlciBXZWJLaXQgQVBJCisgICAg
ICAgIHdrcGF0Y2ggMzogY2xlYW51cCwgZGVsZXRlIHRoZSBvbGQgV2ViS2l0IEFQSSBhbmQgaW1w
bAorICAgICAgICB4eHh4eHh4IDQvNTogY2xlYW51cCwgcmVtb3ZlIGV4dHJhIHBhcmFtcyBmcm9t
IG5ldyBBUEkgd2hvc2Ugb25seSBwdXJwb3NlIHdhcyB0byBhbGxvdyB0aGUgdHJhbnNpdGlvbgor
CisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg6IEFkZCBuZXcgQVBJIHRvIGRpc3BhdGNoIGV2
ZW50cy4KKyAgICAgICAgKiBwdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oOiBBZGQgbmV3IEFQ
SSB0byB0ZXN0IGZvciBuYW1lc3BhY2UgZXF1YWxpdHkuCisgICAgICAgICogc3JjL1N0b3JhZ2VB
cmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0
Y2hMb2NhbFN0b3JhZ2VFdmVudCk6IGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgQVBJCisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZl
bnQpOiAgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBBUEkKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VBcmVhUHJveHk6OklzRXZlbnRTb3VyY2UpOiBhIGhlbHBlciBtZXRob2QKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OkZpbmRQYWdlV2l0aFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKTogYSBoZWxwZXIgbWV0aG9kCisgICAgICAgICogc3JjL1N0b3JhZ2VBcmVhUHJveHku
aDoKKyAgICAgICAgKiBzcmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwOiBhZGRlZCBh
IEZJWE1FIGNvbW1lbnQgdG8gZGVsZXRlIHNvb24KKyAgICAgICAgKiBzcmMvU3RvcmFnZU5hbWVz
cGFjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm94eTo6
SXNTYW1lTmFtZXNwYWNlKTogcGx1bWJpbmcgdG8gY2FsbCB0aGUgbmV3IEFQSQorICAgICAgICAq
IHNyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaDoKKyAgICAgICAgKiBzcmMvV2ViU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KTogcGx1bWJpbmcgdG8gY2FsbCB0
aGUgbmV3IGltcGwKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KTogcGx1bWJpbmcgdG8gY2FsbCB0aGUgbmV3IGlt
cGwKKyAgICAgICAgKiBzcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuaDogYWRkZWQg
YSBGSVhNRSBjb21tZW50IHRvIGRlbGV0ZSBzb29uCisKIDIwMTItMDQtMjMgIERtaXRyeSBUaXRv
diAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0gcm9sbCAxMzM0MjI6
MTMzNTA2LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaAkocmV2aXNpb24gMTE0OTQ4KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxNyArMzUsMzAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIFdlYlN0b3JhZ2VBcmVhOworY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNz
IFdlYlVSTDsKIAotLy8gVGhpcyBpcyB1c2VkIHRvIGRpc3BhdGNoIHN0b3JhZ2UgZXZlbnRzIHRv
IGFsbCBwYWdlcy4KLS8vIEZJWE1FOiBNYWtlIHRoaXMgKG9yIHNvbWV0aGluZykgd29yayBmb3Ig
U2Vzc2lvblN0b3JhZ2UhCiBjbGFzcyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyIHsKIHB1Ymxp
YzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyKiBj
cmVhdGUoKTsKKyAgICAvLyBEaXNwYXRjaCBhIGxvY2FsIHN0b3JhZ2UgZXZlbnQgdG8gYXBwcm9w
aWF0ZSBkb2N1bWVudHMuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExv
Y2FsU3RvcmFnZUV2ZW50KAorICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0
IFdlYlN0cmluZyYgb2xkVmFsdWUsCisgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5ld1Zh
bHVlLCBjb25zdCBXZWJVUkwmIG9yaWdpbiwKKyAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFn
ZVVybCwgV2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwKKyAgICAgICAgICAgIGJv
b2wgb3JpZ2luYXRlZEluUHJvY2Vzcyk7CiAKLSAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyKCkgeyB9CisgICAgLy8gRGlzcGF0Y2ggYSBzZXNzaW9uIHN0b3JhZ2UgZXZlbnQg
dG8gYXBwcm9waWF0ZSBkb2N1bWVudHMuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBk
aXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoCisgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcm
IGtleSwgY29uc3QgV2ViU3RyaW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlVSTCYgb3JpZ2luLAorICAgICAgICAgICAgY29uc3Qg
V2ViVVJMJiBwYWdlVXJsLCBjb25zdCBXZWJTdG9yYWdlTmFtZXNwYWNlJiwKKyAgICAgICAgICAg
IFdlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhSW5zdGFuY2UsIGJvb2wgb3JpZ2luYXRlZEluUHJv
Y2Vzcyk7CiAKLSAgICAvLyBEaXNwYXRjaCB0aGUgYWN0dWFsIGV2ZW50LiAgRG9lc24ndCB5ZXQg
d29yayBmb3IgU2Vzc2lvblN0b3JhZ2UuCisgICAgLy8gREVQUkVDQVRFRCAtIFRoZSBpbnN0YW5j
ZSBtZXRob2RzIGFyZSBnb2luZyBhd2F5IHNvb24gaW4gZmF2b3IKKyAgICAvLyBvZiB0aGUgdHdv
IHN0YXRpYyBkaXNwYXRjaCBtZXRob2RzIGFib3ZlLgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIqIGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfldlYlN0
b3JhZ2VFdmVudERpc3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTdG9y
YWdlRXZlbnQoY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
bmV3VmFsdWUsIGNvbnN0IFdlYlN0cmluZyYgb3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJVUkwmIHVybCwgYm9vbCBpc0xvY2FsU3RvcmFnZSkg
PSAwOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZU5hbWVz
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0
b3JhZ2VOYW1lc3BhY2UuaAkocmV2aXNpb24gMTE0OTQ4KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2
ICs1Myw5IEBAIHB1YmxpYzoKICAgICAvLyBDb3B5IGEgU3RvcmFnZU5hbWVzcGFjZS4gVGhpcyBv
bmx5IG1ha2VzIHNlbnNlIGluIHRoZSBjYXNlIG9mIFNlc3Npb25TdG9yYWdlLgogICAgIHZpcnR1
YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY29weSgpID0gMDsKIAorICAgIC8vIFJldHVybnMgdHJ1
ZSBvZiB0aGUgdHdvIGluc3RhbmNlcyByZXByZXNlbnQgdGhlIHNhbWUgc3RvcmFnZSBuYW1lc3Bh
Y2UuCisgICAgdmlydHVhbCBib29sIGlzU2FtZU5hbWVzcGFjZShjb25zdCBXZWJTdG9yYWdlTmFt
ZXNwYWNlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIERFUFJFQ0FURUQKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcAkocmV2aXNpb24gMTE0OTQ4KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDkgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCisjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFj
ZVByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJQZXJt
aXNzaW9uQ2xpZW50LmgiCkBAIC0xMjEsNiArMTIzLDcgQEAgYm9vbCBTdG9yYWdlQXJlYVByb3h5
Ojpjb250YWlucyhjb25zdCBTdAogICAgIHJldHVybiAhZ2V0SXRlbShrZXksIGZyYW1lKS5pc051
bGwoKTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIG1ldGhvZCBhbmQgdGhlIGNhbGxzIHRv
IGl0IGZyb20gb3VyIHNldHRlcnMgYWZ0ZXIgbXVsdGktc2lkZSBwYXRjaCBsYW5kaW5nIGlzIGRv
bmUuCiAvLyBDb3BpZWQgZnJvbSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ci5jcHAgb3V0IG9mIG5lY2Vzc2l0eS4gIEl0J3MgcHJvYmFibHkgYmVzdCB0byBrZWVwIGl0IGN1
cnJlbnQuCiB2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OnN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3Rv
cmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgRnJh
bWUqIHNvdXJjZUZyYW1lKQogewpAQCAtMTc3LDQgKzE4MCw3NiBAQCBib29sIFN0b3JhZ2VBcmVh
UHJveHk6OmNhbkFjY2Vzc1N0b3JhZ2UoCiAgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9u
Q2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2Vi
RnJhbWUsIG1fc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKIH0KIAordm9pZCBTdG9yYWdl
QXJlYVByb3h5OjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYgcGFnZUdy
b3VwTmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0
IFN0cmluZyYgbmV3VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLVVJMJiBw
YWdlVVJMLCBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhSW5zdGFuY2UsIGJvb2wg
b3JpZ2luYXRlZEluUHJvY2VzcykKK3sKKyAgICAvLyBGSVhNRTogTXVsdGktc2lkZWQgcGF0Y2gg
ZW5naW5lZXJpbmcgYWxlcnQgIQorICAgIC8vIHN0ZXAgMTogdGhpcyBtZXRob2QgZ2V0cyBkZWZp
bmVkIGFuZCBpbXBsZW1lbnRlZCBpbiB3ZWJraXQvd2ViY29yZSB3aXRoIHRoZSBlYXJseSByZXR1
cm4uCisgICAgLy8gc3RlcCAyOiB0aGlzIG1ldGhvZCBzdGFydHMgZ2V0dGluZyBjYWxsZWQgYnkg
Y2hyb21pdW0gc3RpbGwgd2l0aCB0aGUgZWFybHkgcmV0dXJuLgorICAgIC8vIHN0ZXAgMzogVGhp
cyBjbGFzcydzIHNldHRlcnMgYXJlIG1vZGlmaWVkIHRvIG5vIGxvbmdlciByYWlzZSBTZXNzaW9u
U3RvcmFnZQorICAgIC8vICAgICAgICAgZXZlbnRzIGZvciBpbnByb2Nlc3MgY2hhbmdlcyBhbmQg
dGhpcyBlYXJseSByZXR1cm4gaXMgcmVtb3ZlZC4KKyAgICBpZiAob3JpZ2luYXRlZEluUHJvY2Vz
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0g
UGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwTmFtZSktPnBhZ2VzKCk7CisgICAgZm9yIChI
YXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdpbigpOyBpdCAhPSBw
YWdlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
ZXF1YWwoc2VjdXJpdHlPcmlnaW4pICYmICFpc0V2ZW50U291cmNlKGZyYW1lLT5kb21XaW5kb3co
KS0+b3B0aW9uYWxMb2NhbFN0b3JhZ2UoKSwgc291cmNlQXJlYUluc3RhbmNlKSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IHJhaXNlIGlmIHRoZSB3aW5kb3cgaGFzIGFu
IG9uc3RvcmFnZSBsaXN0ZW5lciBhdHRhY2hlZCB0byBhdm9pZCBjcmVhdGluZyB0aGUgU3RvcmFn
ZSBpbnN0YW5jZS4KKyAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAg
ICAgICAgICAgICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWUtPmRvbVdpbmRvdygpLT5sb2NhbFN0
b3JhZ2UoZWMpOworICAgICAgICAgICAgICAgIGlmICghZWMpCisgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFnZUV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHBh
Z2VVUkwsIHN0b3JhZ2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
c3RhdGljIFBhZ2UqIGZpbmRQYWdlV2l0aFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0
cmluZyYgcGFnZUdyb3VwTmFtZSwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlJiBz
ZXNzaW9uTmFtZXNwYWNlKQoreworICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBh
Z2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpLT5wYWdlcygpOworICAgIGZvciAoSGFz
aFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gcGFn
ZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgY29uc3QgYm9vbCBjcmVhdGVJZk5lZWRlZCA9IHRy
dWU7CisgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2VQcm94eSogcHJveHkgPSBzdGF0aWNfY2FzdDxT
dG9yYWdlTmFtZXNwYWNlUHJveHkqPigoKml0KS0+c2Vzc2lvblN0b3JhZ2UoY3JlYXRlSWZOZWVk
ZWQpKTsKKyAgICAgICAgaWYgKHByb3h5LT5pc1NhbWVOYW1lc3BhY2Uoc2Vzc2lvbk5hbWVzcGFj
ZSkpCisgICAgICAgICAgICByZXR1cm4gKml0OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgY29uc3QgS1VSTCYgcGFnZVVSTCwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNl
JiBzZXNzaW9uTmFtZXNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNl
LCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpCit7CisgICAgLy8gRklYTUU6IE11bHRpLXNpZGVk
IHBhdGNoIGVuZ2luZWVyaW5nIGFsZXJ0ICEKKyAgICAvLyBzdGVwIDE6IHRoaXMgbWV0aG9kIGdl
dHMgZGVmaW5lZCBhbmQgaW1wbGVtZW50ZWQgaW4gd2Via2l0L3dlYmNvcmUgd2l0aCB0aGUgZWFy
bHkgcmV0dXJuLgorICAgIC8vIHN0ZXAgMjogdGhpcyBtZXRob2Qgc3RhcnRzIGdldHRpbmcgY2Fs
bGVkIGJ5IGNocm9taXVtIHN0aWxsIHdpdGggdGhlIGVhcmx5IHJldHVybi4KKyAgICAvLyBzdGVw
IDM6IFRoaXMgY2xhc3MncyBzZXR0ZXJzIGFyZSBtb2RpZmllZCB0byBubyBsb25nZXIgcmFpc2Ug
U2Vzc2lvblN0b3JhZ2UKKyAgICAvLyAgICAgICAgIGV2ZW50cyBmb3IgaW5wcm9jZXNzIGNoYW5n
ZXMgYW5kIHRoaXMgZWFybHkgcmV0dXJuIGlzIHJlbW92ZWQuCisgICAgaWYgKG9yaWdpbmF0ZWRJ
blByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIFBhZ2UqIHBhZ2UgPSBmaW5kUGFnZVdp
dGhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlR3JvdXBOYW1lLCBzZXNzaW9uTmFtZXNwYWNl
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRy
YXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pICYmICFpc0V2ZW50U291cmNlKGZyYW1lLT5k
b21XaW5kb3coKS0+b3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpLCBzb3VyY2VBcmVhSW5zdGFuY2Up
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogbWF5YmUgb25seSByYWlzZSBpZiB0aGUgd2luZG93
IGhhcyBhbiBvbnN0b3JhZ2UgbGlzdGVuZXIgYXR0YWNoZWQgdG8gYXZvaWQgY3JlYXRpbmcgdGhl
IFN0b3JhZ2UgaW5zdGFuY2UuCisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZS0+ZG9tV2luZG93KCktPnNlc3Npb25T
dG9yYWdlKGVjKTsKKyAgICAgICAgICAgIGlmICghZWMpCisgICAgICAgICAgICAgICAgZnJhbWUt
PmRvY3VtZW50KCktPmVucXVldWVXaW5kb3dFdmVudChTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuc3RvcmFnZUV2ZW50LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcGFnZVVSTCwg
c3RvcmFnZSkpOworICAgICAgICB9CisgICAgfQorfQorCitib29sIFN0b3JhZ2VBcmVhUHJveHk6
OmlzRXZlbnRTb3VyY2UoU3RvcmFnZSogc3RvcmFnZSwgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYSog
c291cmNlQXJlYUluc3RhbmNlKQoreworICAgIGlmICghc3RvcmFnZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIFN0b3JhZ2VBcmVhUHJveHkqIGFyZWFQcm94eSA9IHN0YXRpY19jYXN0PFN0
b3JhZ2VBcmVhUHJveHkqPihzdG9yYWdlLT5hcmVhKCkpOworICAgIHJldHVybiBhcmVhUHJveHkt
Pm1fc3RvcmFnZUFyZWEgPT0gc291cmNlQXJlYUluc3RhbmNlOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFy
ZWFQcm94eS5oCShyZXZpc2lvbiAxMTQ5NDgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TdG9yYWdlQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxOCBAQAog
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKIAotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdl
YlN0b3JhZ2VBcmVhOyB9CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlN0b3JhZ2VBcmVh
OworY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEtVUkw7CitjbGFzcyBQYWdlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CitjbGFzcyBTdG9yYWdlOwogCiBjbGFzcyBTdG9yYWdlQXJlYVByb3h5IDogcHVibGlj
IFN0b3JhZ2VBcmVhIHsKIHB1YmxpYzoKQEAgLTUxLDEwICs1NywyMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWRCeVByaXZhdGVCcm93c2luZ0luRnJhbWUoY29uc3QgRnJh
bWUqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hM
b2NhbFN0b3JhZ2VFdmVudCgKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsCisgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHBh
Z2VVUkwsIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBv
cmlnaW5hdGVkSW5Qcm9jZXNzKTsKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9y
YWdlRXZlbnQoCisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLAorICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBj
b25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2UmLAorICAgICAgICAgICAgV2ViS2l0OjpX
ZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNlLCBib29sIG9yaWdpbmF0ZWRJblByb2Nl
c3MpOworCiBwcml2YXRlOgogICAgIHZvaWQgc3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdl
VHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBGcmFtZSogc291cmNlRnJhbWUpOwogICAgIGJvb2wgY2Fu
QWNjZXNzU3RvcmFnZShGcmFtZSopIGNvbnN0OwogCisgICAgc3RhdGljIGJvb2wgaXNFdmVudFNv
dXJjZShTdG9yYWdlKiwgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNl
KTsKKwogICAgIE93blB0cjxXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhPiBtX3N0b3JhZ2VBcmVhOwog
ICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNw
cAkocmV2aXNpb24gMTE0OTQ4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBA
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdG9yYWdlRXZlbnQuaCIK
IAorLy8gRklYTUU6IGRlbGV0ZSB0aGlzIGFsbW9zdCBvYnNvbGV0ZSBmaWxlIHNvb24KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbDo6U3RvcmFnZUV2
ZW50RGlzcGF0Y2hlckltcGwoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCkBAIC00OSw3ICs1MSw2
IEBAIFN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsOjpTdG9yYWdlRXZlbnQKICAgICBBU1NFUlQo
bV9wYWdlR3JvdXApOwogfQogCi0vLyBGSVhNRTogYWRkIGEgc291cmNlU3RvcmFnZUFyZWEgcGFy
YW1ldGVyIHRvIHRoaXMKIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGw6OmRpc3BhdGNo
U3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
S1VSTCYgdXJsLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKQEAgLTY2LDcgKzY3LDYgQEAgdm9p
ZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbDo6ZGlzcGF0YwogICAgIEhhc2hTZXQ8UGFnZSo+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwYWdlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFn
ZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBpZGVudGlmeSB0aGUgc3JjRnJhbWUgd2hpbGUgaW4gdGhpcyBsb29wIHRvbyBhbmQg
ZXhjbHVkZSBpdCBmcm9tICdmcmFtZXMnLgogICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgICAg
ICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcAkocmV2
aXNpb24gMTE0OTQ4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVz
cGFjZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDQgKzEwMCw5IEBAIHZvaWQgU3Rv
cmFnZU5hbWVzcGFjZVByb3h5OjpzeW5jKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAorYm9vbCBTdG9yYWdlTmFtZXNwYWNlUHJveHk6OmlzU2FtZU5hbWVzcGFjZShjb25zdCBXZWJL
aXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2UmIHNlc3Npb25OYW1lc3BhY2UpCit7CisgICAgcmV0dXJu
IG1fc3RvcmFnZU5hbWVzcGFjZS0+aXNTYW1lTmFtZXNwYWNlKHNlc3Npb25OYW1lc3BhY2UpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaAkocmV2aXNpb24gMTE0OTQ4KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckFsbE9yaWdpbnNGb3JEZWxldGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jKCk7CiAK
KyAgICBib29sIGlzU2FtZU5hbWVzcGFjZShjb25zdCBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2UmKTsKKwogcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNl
PiBtX3N0b3JhZ2VOYW1lc3BhY2U7CiAgICAgU3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9y
YWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAJKHJldmlzaW9uIDExNDk0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFQcm94eS5oIgogCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTQxLDYgKzQyLDMzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBleHRlcm4gY29uc3QgY2hh
ciogcGFnZUdyb3VwTmFtZTsKIAordm9pZCBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaExvY2FsU3RvcmFnZUV2ZW50KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGtleSwgY29u
c3QgV2ViU3RyaW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1
ZSwgY29uc3QgV2ViVVJMJiBvcmlnaW4sCisgICAgICAgIGNvbnN0IFdlYlVSTCYgcGFnZVVSTCwg
V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwKKyAgICAgICAgYm9vbCBvcmlnaW5h
dGVkSW5Qcm9jZXNzKQoreworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7Cisg
ICAgV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgK
KyAgICAgICAgICAgIHBhZ2VHcm91cE5hbWUsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzZWN1
cml0eU9yaWdpbi5nZXQoKSwgcGFnZVVSTCwKKyAgICAgICAgICAgIHNvdXJjZUFyZWFJbnN0YW5j
ZSwgb3JpZ2luYXRlZEluUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAorICAgICAgICBjb25zdCBXZWJTdHJp
bmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgY29uc3QgV2ViU3Ry
aW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViVVJMJiBvcmlnaW4sCisgICAgICAgIGNvbnN0IFdlYlVS
TCYgcGFnZVVSTCwgY29uc3QgV2ViU3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSwK
KyAgICAgICAgV2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5h
dGVkSW5Qcm9jZXNzKQoreworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7Cisg
ICAgV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
KAorICAgICAgICAgICAgcGFnZUdyb3VwTmFtZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHNl
Y3VyaXR5T3JpZ2luLmdldCgpLCBwYWdlVVJMLAorICAgICAgICAgICAgc2Vzc2lvbk5hbWVzcGFj
ZSwgc291cmNlQXJlYUluc3RhbmNlLCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsKK30KKworCisvLyBG
SVhNRTogcmVtb3ZlIHRoZSBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbCBjbGFzcyBzb29u
LgorCiBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyKiBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVy
OjpjcmVhdGUoKQogewogICAgIHJldHVybiBuZXcgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcklt
cGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERp
c3BhdGNoZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuaAkocmV2aXNpb24gMTE0OTQ4KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CisvLyBERVBSRUNBVEVEIC0gdG8gYmUgcmVtb3ZlZCB3aGVuIHJlbW92aW5nIHRoZSBpbnN0YW5j
ZSBtZXRob2RzIGluIHRoZSBwdWJsaWMgYXBpLgogY2xhc3MgV2ViU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlckltcGwgOiBwdWJsaWMgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAg
ICAgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwoKTsKLQogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5n
JiBvbGRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYsIGJvb2wgaXNMb2NhbFN0
b3JhZ2UpOwotCiBwcml2YXRlOgogICAgIE93blB0cjxXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNw
YXRjaGVySW1wbD4gbV9ldmVudERpc3BhdGNoZXI7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139320</attachid>
            <date>2012-04-27 19:18:14 -0700</date>
            <delta_ts>2012-04-30 11:29:32 -0700</delta_ts>
            <desc>events3</desc>
            <filename>events3.txt</filename>
            <type>text/plain</type>
            <size>38655</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTI3ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gQSBj
b250aW51YXRpb24gb2YgRG9tU3RvcmFnZSBldmVudCBoYW5kbGluZyBtb2RzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzODcKKyAgICAgICAgQWx0
ZXIgdGhlIFN0b3JhZ2VBcmVhIHZpcnR1YWwgaW50ZXJmYWNlIHN1Y2ggdGhhdCB0aGUgbXV0YXRv
cnMgbm8gbG9uZ2VyCisgICAgICAgIHJldHVybiBvbGQgdmFsdWVzLiBUaGlzIGlzIHRvIGFsbG93
IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIHRvIG9wZXJhdGUKKyAgICAgICAgbW9y
ZSBhc3luY2hyb25vdXNseS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIEV4aXN0aW5nIHRlc3RzIGNvdmVyIHRoaXMuCisKKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhLmg6IEFsdGVyIHRoZSBpbnRlcmZhY2Ugc28gdGhl
IG11dGF0b3JzIG5vIGxvbmdlciByZXR1cm4gcHJldmlvdXMgdmFsdWVzCisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJ
bXBsOjpkaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nSW5GcmFtZSk6ICByZW1vdmVkIGFuIHVubmVl
ZGVkIFBMQVRGT1JNKENIUk9NSVVNKSBndWFyZAorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFy
ZWFJbXBsOjpzZXRJdGVtKTogbm8gbG9uZ2VyIHJldHVybiB0aGUgb2xkIHZhbHVlCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OnJlbW92ZUl0ZW0pOiBubyBsb25nZXIgcmV0dXJu
IHRoZSBvbGQgdmFsdWUKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXIp
OiBubyBsb25nZXIgcmV0dXJuIHdoZXRoZXIgc29tZXRoaW5nIHdhcyBjbGVhcmVkCisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDogbWF0Y2ggU3RvcmFnZUFyZWEncyB2aXJ0dWFs
IGludGVyZmFjZQorCiAyMDEyLTA0LTI3ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBFeHBvc2UgaGlnaC1yZXNvbHV0aW9uIG9uIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSBjYWxsYmFjawpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAkocmV2aXNp
b24gMTE1NTIzKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdCA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwgRnJhbWUqIHNvdXJjZUZy
YW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFs
IFN0cmluZyBzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIHNvdXJjZUZyYW1lKSA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFt
ZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY2xlYXIoRnJhbWUqIHNvdXJjZUZyYW1lKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIHNvdXJjZUZyYW1lKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBG
cmFtZSogc291cmNlRnJhbWUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyKEZyYW1l
KiBzb3VyY2VGcmFtZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3Qg
U3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBkaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nSW5GcmFtZShjb25zdCBGcmFtZSog
c291cmNlRnJhbWUpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHAJKHJldmlzaW9uIDExNTUyMykKKysrIFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDEzICsxMDIs
NiBAQCBTdG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbChTdG9yYWdlCiAKIGJvb2wgU3Rv
cmFnZUFyZWFJbXBsOjpkaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nSW5GcmFtZShjb25zdCBGcmFt
ZSogZnJhbWUpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgLy8gVGhlIGZy
YW1lIHBvaW50ZXIgY2FuIGJlIE5VTEwgaW4gQ2hyb21pdW0gc2luY2UgdGhpcyBjYWxsIGlzIG1h
ZGUgaW4gYSBkaWZmZXJlbnQKLSAgICAvLyBwcm9jZXNzIGZyb20gd2hlcmUgdGhlIEZyYW1lIG9i
amVjdCBleGlzdHMuICBMdWNraWx5LCBwcml2YXRlIGJyb3dzZWluZyBpcwotICAgIC8vIGltcGxl
bWVudGVkIGRpZmZlcmVudGx5IGluIENocm9taXVtLCBzbyBpdCdkIG5ldmVyIHJldHVybiB0cnVl
IGFueXdheS4KLSAgICBBU1NFUlQoIWZyYW1lKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQog
ICAgIGlmICghZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKCFm
cmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCkBAIC0x
MTYsNyArMTA5LDYgQEAgYm9vbCBTdG9yYWdlQXJlYUltcGw6OmRpc2FibGVkQnlQcml2YXRlQgog
ICAgIGlmIChtX3N0b3JhZ2VUeXBlICE9IExvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgcmV0dXJuICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzTG9jYWxTdG9yYWdlQWNjZXNz
SW5Qcml2YXRlQnJvd3NpbmcoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnBy
b3RvY29sKCkpOwotI2VuZGlmCiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3Ro
KEZyYW1lKikgY29uc3QKQEAgLTE0Myw3ICsxMzUsNyBAQCBTdHJpbmcgU3RvcmFnZUFyZWFJbXBs
OjpnZXRJdGVtKGNvbnN0IFN0CiAgICAgcmV0dXJuIG1fc3RvcmFnZU1hcC0+Z2V0SXRlbShrZXkp
OwogfQogCi1TdHJpbmcgU3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIGZyYW1lKQor
dm9pZCBTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNT
RVJUKCFtX2lzU2h1dGRvd24pOwogICAgIEFTU0VSVCghdmFsdWUuaXNOdWxsKCkpOwpAQCAtMTUx
LDcgKzE0Myw3IEBAIFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0oY29uc3QgU3QKIAog
ICAgIGlmIChkaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nSW5GcmFtZShmcmFtZSkpIHsKICAgICAg
ICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFN0cmluZyBvbGRWYWx1ZTsKQEAgLTE2MiwyNSAr
MTU0LDI0IEBAIFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0oY29uc3QgU3QKIAogICAg
IGlmIChxdW90YUV4Y2VwdGlvbikgewogICAgICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsK
LSAgICAgICAgcmV0dXJuIG9sZFZhbHVlOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKG9sZFZhbHVlID09IHZhbHVlKQotICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhU3luYykKICAgICAgICAgbV9zdG9yYWdl
QXJlYVN5bmMtPnNjaGVkdWxlSXRlbUZvclN5bmMoa2V5LCB2YWx1ZSk7CiAgICAgU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goa2V5LCBvbGRWYWx1ZSwgdmFsdWUsIG1fc3RvcmFnZVR5
cGUsIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGZyYW1lKTsKLSAgICByZXR1cm4gb2xkVmFsdWU7
CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYUltcGw6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBr
ZXksIEZyYW1lKiBmcmFtZSkKK3ZvaWQgU3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKGNvbnN0
IFN0cmluZyYga2V5LCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24p
OwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwogCiAgICAgaWYgKGRpc2FibGVkQnlQ
cml2YXRlQnJvd3NpbmdJbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgb2xkVmFsdWU7CiAgICAgUmVmUHRyPFN0b3Jh
Z2VNYXA+IG5ld01hcCA9IG1fc3RvcmFnZU1hcC0+cmVtb3ZlSXRlbShrZXksIG9sZFZhbHVlKTsK
QEAgLTE4OCwyNCArMTc5LDIzIEBAIFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OnJlbW92ZUl0ZW0o
Y29uc3QKICAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKIAogICAgIGlm
IChvbGRWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG9sZFZhbHVlOworICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9zdG9yYWdlQXJlYVN5bmMpCiAgICAgICAgIG1fc3RvcmFnZUFy
ZWFTeW5jLT5zY2hlZHVsZUl0ZW1Gb3JTeW5jKGtleSwgU3RyaW5nKCkpOwogICAgIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGtleSwgb2xkVmFsdWUsIFN0cmluZygpLCBtX3N0b3Jh
Z2VUeXBlLCBtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBmcmFtZSk7Ci0gICAgcmV0dXJuIG9sZFZh
bHVlOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXIoRnJhbWUqIGZyYW1lKQordm9p
ZCBTdG9yYWdlQXJlYUltcGw6OmNsZWFyKEZyYW1lKiBmcmFtZSkKIHsKICAgICBBU1NFUlQoIW1f
aXNTaHV0ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CiAKICAgICBpZiAo
ZGlzYWJsZWRCeVByaXZhdGVCcm93c2luZ0luRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9zdG9yYWdlTWFwLT5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25l
ZCBxdW90YSA9IG1fc3RvcmFnZU1hcC0+cXVvdGEoKTsKICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9y
YWdlTWFwOjpjcmVhdGUocXVvdGEpOwpAQCAtMjEzLDcgKzIwMyw2IEBAIGJvb2wgU3RvcmFnZUFy
ZWFJbXBsOjpjbGVhcihGcmFtZSogZnJhbWUKICAgICBpZiAobV9zdG9yYWdlQXJlYVN5bmMpCiAg
ICAgICAgIG1fc3RvcmFnZUFyZWFTeW5jLT5zY2hlZHVsZUNsZWFyKCk7CiAgICAgU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goU3RyaW5nKCksIFN0cmluZygpLCBTdHJpbmcoKSwgbV9z
dG9yYWdlVHlwZSwgbV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgZnJhbWUpOwotICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIFN0b3JhZ2VBcmVhSW1wbDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBr
ZXksIEZyYW1lKikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaAkocmV2aXNpb24gMTE1NTIzKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKEZyYW1lKiBzb3VyY2VG
cmFtZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwg
RnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0SXRl
bShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBTdHJpbmcgc2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1lKiBzb3VyY2VGcmFtZSk7Ci0gICAgICAgIHZp
cnR1YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VG
cmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjbGVhcihGcmFtZSogc291cmNlRnJhbWUpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1lKiBzb3VyY2VGcmFtZSk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291
cmNlRnJhbWUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoRnJhbWUqIHNvdXJjZUZyYW1l
KTsKICAgICAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5LCBGcmFt
ZSogc291cmNlRnJhbWUpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZEJ5
UHJpdmF0ZUJyb3dzaW5nSW5GcmFtZShjb25zdCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTUyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDQtMjcgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisK
KyAgICAgICAgW2Nocm9taXVtXSBBIGNvbnRpbnVhdGlvbiBvZiBEb21TdG9yYWdlIGV2ZW50IGhh
bmRsaW5nIG1vZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NDM4NworICAgICAgICBBbHRlciB0aGUgV2ViU3RvcmFnZUFyZWEgdmlydHVhbCBpbnRl
cmZhY2Ugc3VjaCB0aGF0IHRoZSBtdXRhdG9ycyBubyBsb25nZXIKKyAgICAgICAgcmV0dXJuIG9s
ZCB2YWx1ZXMuIFRoaXMgaXMgdG8gYWxsb3cgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbnRlcmZh
Y2UgdG8gb3BlcmF0ZQorICAgICAgICBtb3JlIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgIEFs
c28gY2xlYW4gdXAgZnJvbSB0aGUgbGFzdCBwYXRjaCwgcmVtb3ZlIHN1cHBvcnQgZm9yIHRoZSBE
RVBSRUNBVEVEIGV2ZW50CisgICAgICAgIGRpc3BhdGNoaW5nIEFQSS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJTdG9yYWdlQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlQXJlYTo6c2V0SXRlbSk6IG5vIGxvbmdl
ciByZXR1cm5zIHRoZSBvbGQgdmFsdWUKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6
OnJlbW92ZUl0ZW0pOiBubyBsb25nZXIgcmV0dXJucyB0aGUgb2xkIHZhbHVlCisgICAgICAgIChX
ZWJLaXQ6OldlYlN0b3JhZ2VBcmVhOjpjbGVhcik6IG5vIGxvbmdlciByZXR1cm5zIGEgYm9vbCBp
bmRpY2F0ZWQgaWYgc29tZXRoaW5nIHdhcyBjbGVhcmVkCisgICAgICAgICogcHVibGljL1dlYlN0
b3JhZ2VFdmVudERpc3BhdGNoZXIuaDogcmVtb3ZlZCB0aGUgREVQUkVDQVRFRCBpbnN0YW5jZSBt
ZXRob2RzLgorICAgICAgICAqIHB1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmg6IHJlbW92ZWQg
dGhlIERFUFJFQ0FURUQgY2xvc2UoKSBtZXRob2QKKyAgICAgICAgKiBzcmMvU3RvcmFnZUFyZWFQ
cm94eS5jcHA6IHJlbW92ZWQgdGhlIERFUFJFQUNURUQgc3RvcmFnZUV2ZW50KCkgbWV0aG9kCisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpzZXRJdGVtKTogbm8gcmV0dXJuIHZh
bHVlCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpyZW1vdmVJdGVtKTogbm8g
cmV0dXJuIHZhbHVlCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjbGVhcik6
IG5vIHJldHVybiB2YWx1ZQorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6ZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6IHJlbW92ZSBhbiBlYXJseSByZXR1cm4gdGhhdHMgbm8g
bG9uZ2VyIG5lZWRlZAorICAgICAgICAoV2ViQ29yZTo6ZmluZFBhZ2VXaXRoU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UpOiBzd2l0Y2hlZCB0byBwYXNzaW5nIHBhZ2VHcm91cCBieSBwdHIgdmFsdWUg
aW5zdGVhZCBvZiBieSBuYW1lCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5Ojpk
aXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQpOiByZW1vdmUgYW4gZWFybHkgcmV0dXJuIHRoYXRz
IG5vIGxvbmdlciBuZWVkZWQKKyAgICAgICAgKiBzcmMvU3RvcmFnZUFyZWFQcm94eS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdG9yYWdlQXJlYVByb3h5KToKKyAgICAgICAgKiBz
cmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwOiBEZWxldGVkIHRoZSBmaWxlLgorICAg
ICAgICAqIHNyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oOiBEZWxldGVkIHRoZSBmaWxl
LgorICAgICAgICAqIHNyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHA6IERlbGV0
ZWQgdGhlIERFUFJFQ0FURUQgaW5zdGFuY2UgbWV0aG9kcy4KKyAgICAgICAgKFdlYktpdDo6V2Vi
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6IHVzZSBX
ZWJWaWV3SW1wbDo6ZGVmYXVsdFBhZ2VHcm91cAorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdl
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQpOiB1c2UgV2ViVmll
d0ltcGw6OmRlZmF1bHRQYWdlR3JvdXAKKyAgICAgICAgKiBzcmMvV2ViU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlckltcGwuaDogRGVsZXRlZCB0aGUgZmlsZS4KKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOiBhZGRlZCBhIHN0YXRpYyBtZXRob2QgdG8gcmV0cmlldmUgYSBwdHIgdG8gdGhlIGRl
ZmF1bHQgcGFnZSBncm91cCwKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRlZmF1bHRQ
YWdlR3JvdXApOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCisKIDIwMTItMDQtMjcg
IE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEV4cG9zZSBoaWdoLXJl
c29sdXRpb24gb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgJKHJldmlzaW9uIDEx
NTUyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDE1ICs2MywzMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBX
ZWJTdHJpbmcgZ2V0SXRlbShjb25zdCBXZWJTdHJpbmcmIGtleSkgPSAwOwogCiAgICAgLy8gU2V0
IHRoZSB2YWx1ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgc3BlY2lmaWMga2V5LiBSZXN1bHQgd2ls
bCBlaXRoZXIgYmUgUmVzdWx0T0sKLSAgICAvLyBvciBzb21lIHBhcnRpY3VsYXIgZXJyb3IuIFRo
ZSB2YWx1ZSBpcyBOT1Qgc2V0IHdoZW4gdGhlcmUncyBhbiBlcnJvci4gIHVybCBpcyB0aGUKKyAg
ICAvLyBvciBzb21lIHBhcnRpY3VsYXIgZXJyb3IuIFRoZSB2YWx1ZSBpcyBOT1Qgc2V0IHdoZW4g
dGhlcmUncyBhbiBlcnJvci4gIHBhZ2VVcmwgaXMgdGhlCiAgICAgLy8gdXJsIHRoYXQgc2hvdWxk
IGJlIHVzZWQgaWYgYSBzdG9yYWdlIGV2ZW50IGZpcmVzLgotICAgIHZpcnR1YWwgdm9pZCBzZXRJ
dGVtKGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25z
dCBXZWJVUkwmLCBSZXN1bHQmLCBXZWJTdHJpbmcmIG9sZFZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgbmV3
VmFsdWUsIGNvbnN0IFdlYlVSTCYgcGFnZVVybCwgUmVzdWx0JiByZXN1bHQpCisgICAgeworICAg
ICAgICBXZWJTdHJpbmcgdW51c2VkOworICAgICAgICBzZXRJdGVtKGtleSwgbmV3VmFsdWUsIHBh
Z2VVcmwsIHJlc3VsdCwgdW51c2VkKTsKKyAgICB9CisKIAotICAgIC8vIFJlbW92ZSB0aGUgdmFs
dWUgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBrZXkuICB1cmwgaXMgdGhlIHVybCB0aGF0
IHNob3VsZCBiZSB1c2VkCisgICAgLy8gUmVtb3ZlIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGgg
YSBwYXJ0aWN1bGFyIGtleS4gIHBhZ2VVcmwgaXMgdGhlIHVybCB0aGF0IHNob3VsZCBiZSB1c2Vk
CiAgICAgLy8gaWYgYSBzdG9yYWdlIGV2ZW50IGZpcmVzLgotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVJdGVtKGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJVUkwmIHVybCwgV2ViU3RyaW5n
JiBvbGRWYWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFdlYlN0
cmluZyYga2V5LCBjb25zdCBXZWJVUkwmIHBhZ2VVcmwpCisgICAgeworICAgICAgICBXZWJTdHJp
bmcgdW51c2VkOworICAgICAgICByZW1vdmVJdGVtKGtleSwgcGFnZVVybCwgdW51c2VkKTsKKyAg
ICB9CiAKLSAgICAvLyBDbGVhciBhbGwga2V5L3ZhbHVlIHBhaXJzLiAgdXJsIGlzIHRoZSB1cmwg
dGhhdCBzaG91bGQgYmUgdXNlZCBpZiBhIHN0b3JhZ2UgZXZlbnQgZmlyZXMuCisgICAgLy8gQ2xl
YXIgYWxsIGtleS92YWx1ZSBwYWlycy4gIHBhZ2VVcmwgaXMgdGhlIHVybCB0aGF0IHNob3VsZCBi
ZSB1c2VkIGlmIGEgc3RvcmFnZSBldmVudCBmaXJlcy4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIo
Y29uc3QgV2ViVVJMJiBwYWdlVXJsKQorICAgIHsKKyAgICAgICAgYm9vbCB1bnVzZWQ7CisgICAg
ICAgIGNsZWFyKHBhZ2VVcmwsIHVudXNlZCk7CisgICAgfQorCisgICAgLy8gREVQUkVDQVRFRCAt
IGJlaW5nIHJlcGxhY2VkIGJ5IHRoZSBhc3luYyB2YXJpYW50cyBhYm92ZSB3aGljaCBkbyBub3Qg
cmV0dXJuIG9sZFZhbHVlcyBvciBibG9jayB1bnRpbCBjb21wbGV0aW9uLgorICAgIHZpcnR1YWwg
dm9pZCBzZXRJdGVtKGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG5ld1Zh
bHVlLCBjb25zdCBXZWJVUkwmLCBSZXN1bHQmLCBXZWJTdHJpbmcmIG9sZFZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdl
YlVSTCYgdXJsLCBXZWJTdHJpbmcmIG9sZFZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyKGNvbnN0IFdlYlVSTCYgdXJsLCBib29sJiBzb21ldGhpbmdDbGVhcmVkKSA9IDA7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNw
YXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCShyZXZpc2lvbiAxMTU1MjMpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDEzICs1NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvbnN0IFdlYlVS
TCYgcGFnZVVybCwgY29uc3QgV2ViU3RvcmFnZU5hbWVzcGFjZSYsCiAgICAgICAgICAgICBXZWJT
dG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNlLCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3Mp
OwogCi0gICAgLy8gREVQUkVDQVRFRCAtIFRoZSBpbnN0YW5jZSBtZXRob2RzIGFyZSBnb2luZyBh
d2F5IHNvb24gaW4gZmF2b3IKLSAgICAvLyBvZiB0aGUgdHdvIHN0YXRpYyBkaXNwYXRjaCBtZXRo
b2RzIGFib3ZlLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlN0b3JhZ2VFdmVudERpc3Bh
dGNoZXIqIGNyZWF0ZSgpOwotICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIo
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgV2ViU3Ry
aW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlN0
cmluZyYgb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJVUkwmIHVybCwgYm9vbCBpc0xvY2FsU3RvcmFnZSkgPSAwOworIHByaXZhdGU6CisgICAg
V2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Rv
cmFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiAxMTU1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkg
KzU1LDYgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9mIHRoZSB0d28gaW5zdGFu
Y2VzIHJlcHJlc2VudCB0aGUgc2FtZSBzdG9yYWdlIG5hbWVzcGFjZS4KICAgICB2aXJ0dWFsIGJv
b2wgaXNTYW1lTmFtZXNwYWNlKGNvbnN0IFdlYlN0b3JhZ2VOYW1lc3BhY2UmKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotCi0gICAgLy8gREVQUkVDQVRFRAotICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZSgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcAkocmV2aXNpb24gMTE1NTIz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDQyICs4MCwyOSBAQCBTdHJpbmcgU3RvcmFnZUFyZWFQcm94eTo6
Z2V0SXRlbShjb25zdCBTCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgU3RvcmFn
ZUFyZWFQcm94eTo6c2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgU3RvcmFnZUFyZWFQcm94
eTo6c2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0
aW9uQ29kZSYgZWMsIEZyYW1lKiBmcmFtZSkKIHsKLSAgICBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVh
OjpSZXN1bHQgcmVzdWx0ID0gV2ViS2l0OjpXZWJTdG9yYWdlQXJlYTo6UmVzdWx0T0s7Ci0gICAg
V2ViS2l0OjpXZWJTdHJpbmcgb2xkVmFsdWU7CiAgICAgaWYgKCFjYW5BY2Nlc3NTdG9yYWdlKGZy
YW1lKSkKICAgICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIG1fc3RvcmFnZUFyZWEtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLCByZXN1bHQsIG9sZFZhbHVlKTsKKyAgICAgICAgV2ViS2l0OjpXZWJTdG9yYWdlQXJl
YTo6UmVzdWx0IHJlc3VsdCA9IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9LOworICAg
ICAgICBtX3N0b3JhZ2VBcmVhLT5zZXRJdGVtKGtleSwgdmFsdWUsIGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKSwgcmVzdWx0KTsKICAgICAgICAgZWMgPSAocmVzdWx0ID09IFdlYktpdDo6V2ViU3Rv
cmFnZUFyZWE6OlJlc3VsdE9LKSA/IDAgOiBRVU9UQV9FWENFRURFRF9FUlI7Ci0gICAgICAgIFN0
cmluZyBvbGRWYWx1ZVN0cmluZyA9IG9sZFZhbHVlOwotICAgICAgICBpZiAob2xkVmFsdWVTdHJp
bmcgIT0gdmFsdWUgJiYgcmVzdWx0ID09IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9L
KQotICAgICAgICAgICAgc3RvcmFnZUV2ZW50KGtleSwgb2xkVmFsdWUsIHZhbHVlLCBtX3N0b3Jh
Z2VUeXBlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUpOwogICAg
IH0KLSAgICByZXR1cm4gb2xkVmFsdWU7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYVByb3h5Ojpy
ZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogZnJhbWUpCit2b2lkIFN0b3JhZ2VB
cmVhUHJveHk6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIHsK
ICAgICBpZiAoIWNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgV2ViS2l0OjpXZWJTdHJpbmcgb2xkVmFsdWU7Ci0gICAgbV9zdG9yYWdlQXJlYS0+
cmVtb3ZlSXRlbShrZXksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgb2xkVmFsdWUpOwotICAg
IGlmICghb2xkVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHN0b3JhZ2VFdmVudChrZXksIG9sZFZh
bHVlLCBTdHJpbmcoKSwgbV9zdG9yYWdlVHlwZSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIGZyYW1lKTsKLSAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgICAgIHJldHVybjsK
KyAgICBtX3N0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKGtleSwgZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpKTsKIH0KIAotYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjbGVhcihGcmFtZSogZnJhbWUpCit2
b2lkIFN0b3JhZ2VBcmVhUHJveHk6OmNsZWFyKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWNh
bkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBj
bGVhcmVkU29tZXRoaW5nOwotICAgIG1fc3RvcmFnZUFyZWEtPmNsZWFyKGZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSwgY2xlYXJlZFNvbWV0aGluZyk7Ci0gICAgaWYgKGNsZWFyZWRTb21ldGhpbmcp
Ci0gICAgICAgIHN0b3JhZ2VFdmVudChTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmluZygpLCBtX3N0
b3JhZ2VUeXBlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUpOwot
ICAgIHJldHVybiBjbGVhcmVkU29tZXRoaW5nOworICAgICAgICByZXR1cm47CisgICAgbV9zdG9y
YWdlQXJlYS0+Y2xlYXIoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKIH0KIAogYm9vbCBTdG9y
YWdlQXJlYVByb3h5Ojpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIGZyYW1lKSBj
b25zdApAQCAtMTIzLDU0ICsxMTAsNiBAQCBib29sIFN0b3JhZ2VBcmVhUHJveHk6OmNvbnRhaW5z
KGNvbnN0IFN0CiAgICAgcmV0dXJuICFnZXRJdGVtKGtleSwgZnJhbWUpLmlzTnVsbCgpOwogfQog
Ci0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgbWV0aG9kIGFuZCB0aGUgY2FsbHMgdG8gaXQgZnJvbSBv
dXIgc2V0dGVycyBhZnRlciBtdWx0aS1zaWRlIHBhdGNoIGxhbmRpbmcgaXMgZG9uZS4KLS8vIENv
cGllZCBmcm9tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBvdXQg
b2YgbmVjZXNzaXR5LiAgSXQncyBwcm9iYWJseSBiZXN0IHRvIGtlZXAgaXQgY3VycmVudC4KLXZv
aWQgU3RvcmFnZUFyZWFQcm94eTo6c3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBz
dG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBGcmFtZSogc291cmNl
RnJhbWUpCi17Ci0gICAgUGFnZSogcGFnZSA9IHNvdXJjZUZyYW1lLT5wYWdlKCk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGNvcHkgYWxsIHJl
bGV2YW50IGZyYW1lcyBmcm9tIGV2ZXJ5IHBhZ2UgdG8gYSB2ZWN0b3Igc2luY2Ugc2VuZGluZyB0
aGUgZXZlbnQgdG8gb25lIGZyYW1lIG1pZ2h0IG11dGF0ZSB0aGUgZnJhbWUgdHJlZQotICAgIC8v
IG9mIGFueSBnaXZlbiBwYWdlIGluIHRoZSBncm91cCBvciBtdXRhdGUgdGhlIHBhZ2UgZ3JvdXAg
aXRzZWxmLgotICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+ID4gZnJhbWVzOwotICAgIGlmIChzdG9y
YWdlVHlwZSA9PSBTZXNzaW9uU3RvcmFnZSkgewotICAgICAgICAvLyBTZW5kIGV2ZW50cyBvbmx5
IHRvIG91ciBwYWdlLgotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewotICAg
ICAgICAgICAgaWYgKHNvdXJjZUZyYW1lICE9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0eU9yaWdpbikpCi0gICAgICAgICAgICAgICAg
ZnJhbWVzLmFwcGVuZChmcmFtZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZnJhbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
bWF5YmUgb25seSByYWlzZSBpZiB0aGUgd2luZG93IGhhcyBhbiBvbnN0b3JhZ2UgbGlzdGVuZXIK
LSAgICAgICAgICAgIC8vIGF0dGFjaGVkIHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBTdG9yYWdlIGlu
c3RhbmNlLgotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBT
dG9yYWdlKiBzdG9yYWdlID0gZnJhbWVzW2ldLT5kb21XaW5kb3coKS0+c2Vzc2lvblN0b3JhZ2Uo
ZWMpOwotICAgICAgICAgICAgaWYgKCFlYykKLSAgICAgICAgICAgICAgICBmcmFtZXNbaV0tPmRv
Y3VtZW50KCktPmVucXVldWVXaW5kb3dFdmVudChTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuc3RvcmFnZUV2ZW50LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc291cmNlRnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLCBzdG9yYWdlKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgICAvLyBTZW5kIGV2ZW50cyB0byBldmVyeSBwYWdlLgotICAgICAgICBjb25zdCBIYXNo
U2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlLT5ncm91cCgpLnBhZ2VzKCk7Ci0gICAgICAgIEhhc2hT
ZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwYWdlcy5lbmQoKTsKLSAgICAgICAgZm9y
IChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pKQotICAgICAg
ICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IHJhaXNlIGlmIHRoZSB3aW5k
b3cgaGFzIGFuIG9uc3RvcmFnZSBsaXN0ZW5lcgotICAgICAgICAgICAgLy8gYXR0YWNoZWQgdG8g
YXZvaWQgY3JlYXRpbmcgdGhlIFN0b3JhZ2UgaW5zdGFuY2UuCi0gICAgICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZXNbaV0t
PmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoZWMpOwotICAgICAgICAgICAgaWYgKCFlYykKLSAg
ICAgICAgICAgICAgICBmcmFtZXNbaV0tPmRvY3VtZW50KCktPmVucXVldWVXaW5kb3dFdmVudChT
dG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50LCBrZXksIG9sZFZh
bHVlLCBuZXdWYWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBzdG9yYWdlKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGJvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y2FuQWNjZXNz
U3RvcmFnZShGcmFtZSogZnJhbWUpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFtZS0+cGFnZSgpKQpA
QCAtMTgwLDE4ICsxMTksMTAgQEAgYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9y
YWdlKAogICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXct
PnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dTdG9yYWdlKHdlYkZyYW1lLCBtX3N0b3JhZ2VUeXBl
ID09IExvY2FsU3RvcmFnZSk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hM
b2NhbFN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAor
dm9pZCBTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KFBhZ2VHcm91
cCogcGFnZUdyb3VwLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtV
UkwmIHBhZ2VVUkwsIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwg
Ym9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQogewotICAgIC8vIEZJWE1FOiBNdWx0aS1zaWRlZCBw
YXRjaCBlbmdpbmVlcmluZyBhbGVydCAhCi0gICAgLy8gc3RlcCAxOiB0aGlzIG1ldGhvZCBnZXRz
IGRlZmluZWQgYW5kIGltcGxlbWVudGVkIGluIHdlYmtpdC93ZWJjb3JlIHdpdGggdGhlIGVhcmx5
IHJldHVybi4KLSAgICAvLyBzdGVwIDI6IHRoaXMgbWV0aG9kIHN0YXJ0cyBnZXR0aW5nIGNhbGxl
ZCBieSBjaHJvbWl1bSBzdGlsbCB3aXRoIHRoZSBlYXJseSByZXR1cm4uCi0gICAgLy8gc3RlcCAz
OiBUaGlzIGNsYXNzJ3Mgc2V0dGVycyBhcmUgbW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHJhaXNlIFNl
c3Npb25TdG9yYWdlCi0gICAgLy8gICAgICAgICBldmVudHMgZm9yIGlucHJvY2VzcyBjaGFuZ2Vz
IGFuZCB0aGlzIGVhcmx5IHJldHVybiBpcyByZW1vdmVkLgotICAgIGlmIChvcmlnaW5hdGVkSW5Q
cm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFn
ZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXBOYW1lKS0+cGFnZXMoKTsKKyAgICBj
b25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAtPnBhZ2VzKCk7CiAgICAgZm9y
IChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdpbigpOyBpdCAh
PSBwYWdlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQp
LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpIHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pICYmICFpc0V2ZW50U291cmNlKGZyYW1lLT5kb21XaW5k
b3coKS0+b3B0aW9uYWxMb2NhbFN0b3JhZ2UoKSwgc291cmNlQXJlYUluc3RhbmNlKSkgewpAQCAt
MjA1LDkgKzEzNiw5IEBAIHZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3IK
ICAgICB9CiB9CiAKLXN0YXRpYyBQYWdlKiBmaW5kUGFnZVdpdGhTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSkKK3N0YXRpYyBQYWdlKiBmaW5kUGFnZVdpdGhT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlR3JvdXAqIHBhZ2VHcm91cCwgY29uc3QgV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlJiBzZXNzaW9uTmFtZXNwYWNlKQogewotICAgIGNvbnN0IEhh
c2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUp
LT5wYWdlcygpOworICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC0+
cGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBh
Z2VzLmJlZ2luKCk7IGl0ICE9IHBhZ2VzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IGJv
b2wgY3JlYXRlSWZOZWVkZWQgPSB0cnVlOwogICAgICAgICBTdG9yYWdlTmFtZXNwYWNlUHJveHkq
IHByb3h5ID0gc3RhdGljX2Nhc3Q8U3RvcmFnZU5hbWVzcGFjZVByb3h5Kj4oKCppdCktPnNlc3Np
b25TdG9yYWdlKGNyZWF0ZUlmTmVlZGVkKSk7CkBAIC0yMTcsMTkgKzE0OCwxMSBAQCBzdGF0aWMg
UGFnZSogZmluZFBhZ2VXaXRoU2Vzc2lvblN0b3JhZ2VOCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IFN0
cmluZyYgcGFnZUdyb3VwTmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCit2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OmRp
c3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudChQYWdlR3JvdXAqIHBhZ2VHcm91cCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIGNvbnN0IFdl
YktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZSYgc2Vzc2lvbk5hbWVzcGFjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViU3RvcmFn
ZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQogewot
ICAgIC8vIEZJWE1FOiBNdWx0aS1zaWRlZCBwYXRjaCBlbmdpbmVlcmluZyBhbGVydCAhCi0gICAg
Ly8gc3RlcCAxOiB0aGlzIG1ldGhvZCBnZXRzIGRlZmluZWQgYW5kIGltcGxlbWVudGVkIGluIHdl
YmtpdC93ZWJjb3JlIHdpdGggdGhlIGVhcmx5IHJldHVybi4KLSAgICAvLyBzdGVwIDI6IHRoaXMg
bWV0aG9kIHN0YXJ0cyBnZXR0aW5nIGNhbGxlZCBieSBjaHJvbWl1bSBzdGlsbCB3aXRoIHRoZSBl
YXJseSByZXR1cm4uCi0gICAgLy8gc3RlcCAzOiBUaGlzIGNsYXNzJ3Mgc2V0dGVycyBhcmUgbW9k
aWZpZWQgdG8gbm8gbG9uZ2VyIHJhaXNlIFNlc3Npb25TdG9yYWdlCi0gICAgLy8gICAgICAgICBl
dmVudHMgZm9yIGlucHJvY2VzcyBjaGFuZ2VzIGFuZCB0aGlzIGVhcmx5IHJldHVybiBpcyByZW1v
dmVkLgotICAgIGlmIChvcmlnaW5hdGVkSW5Qcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBQYWdlKiBwYWdlID0gZmluZFBhZ2VXaXRoU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUdy
b3VwTmFtZSwgc2Vzc2lvbk5hbWVzcGFjZSk7CisgICAgUGFnZSogcGFnZSA9IGZpbmRQYWdlV2l0
aFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VHcm91cCwgc2Vzc2lvbk5hbWVzcGFjZSk7CiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgJKHJldmlzaW9uIDExNTUyMykKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEtVUkw7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTdG9yYWdlOwogCkBAIC01MCwyMyArNTEsMjIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CiAgICAg
dmlydHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4LCBGcmFtZSogc291cmNlRnJhbWUpIGNv
bnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1l
KiBzb3VyY2VGcmFtZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2V0SXRlbShjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1l
KiBzb3VyY2VGcmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlSXRlbShjb25zdCBTdHJp
bmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2xlYXIoRnJh
bWUqIHNvdXJjZUZyYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbShjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1lKiBzb3Vy
Y2VGcmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXks
IEZyYW1lKiBzb3VyY2VGcmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKEZyYW1lKiBzb3Vy
Y2VGcmFtZSk7CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5LCBG
cmFtZSogc291cmNlRnJhbWUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkQnlQ
cml2YXRlQnJvd3NpbmdJbkZyYW1lKGNvbnN0IEZyYW1lKikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoCi0gICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAorICAgICAgICAgICAg
UGFnZUdyb3VwKiBwYWdlR3JvdXAsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAogICAgICAgICAgICAgU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhKiBzb3VyY2VB
cmVhSW5zdGFuY2UsIGJvb2wgb3JpZ2luYXRlZEluUHJvY2Vzcyk7CiAgICAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KAotICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBw
YWdlR3JvdXBOYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKKyAgICAgICAgICAgIFBhZ2VHcm91cCogcGFnZUdyb3Vw
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwKICAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYgcGFn
ZVVSTCwgY29uc3QgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlJiwKICAgICAgICAgICAgIFdl
YktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVk
SW5Qcm9jZXNzKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHN0b3JhZ2VFdmVudChjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
U3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKICAgICBi
b29sIGNhbkFjY2Vzc1N0b3JhZ2UoRnJhbWUqKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIGlz
RXZlbnRTb3VyY2UoU3RvcmFnZSosIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJ
bnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlRXZlbnRE
aXNwYXRjaGVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwCShyZXZpc2lvbiAxMTU1MjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oIgotCi0jaW5jbHVkZSAiRE9NV2luZG93
LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5j
bHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2lu
Y2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAiU3RvcmFnZUV2ZW50LmgiCi0KLS8vIEZJWE1FOiBkZWxldGUgdGhpcyBhbG1vc3Qgb2Jzb2xl
dGUgZmlsZSBzb29uCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlckltcGw6OlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsKGNvbnN0IFN0cmluZyYgZ3JvdXBO
YW1lKQotICAgIDogbV9wYWdlR3JvdXAoUGFnZUdyb3VwOjpwYWdlR3JvdXAoZ3JvdXBOYW1lKSkK
LXsKLSAgICBBU1NFUlQobV9wYWdlR3JvdXApOwotfQotCi12b2lkIFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXJJbXBsOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBvbGRWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEtVUkwmIHVybCwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotICAgIGlmIChzdG9yYWdlVHlwZSA9PSBTZXNzaW9u
U3RvcmFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgbmVlZCB0byBjb3B5IGFsbCBy
ZWxldmFudCBmcmFtZXMgZnJvbSBldmVyeSBwYWdlIHRvIGEgdmVjdG9yIHNpbmNlIHNlbmRpbmcg
dGhlIGV2ZW50IHRvIG9uZSBmcmFtZSBtaWdodCBtdXRhdGUgdGhlIGZyYW1lIHRyZWUKLSAgICAv
LyBvZiBhbnkgZ2l2ZW4gcGFnZSBpbiB0aGUgZ3JvdXAgb3IgbXV0YXRlIHRoZSBwYWdlIGdyb3Vw
IGl0c2VsZi4KLSAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPiA+IGZyYW1lczsKLQotICAgIGNvbnN0
IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IG1fcGFnZUdyb3VwLT5wYWdlcygpOwotICAgIEhhc2hT
ZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwYWdlcy5lbmQoKTsKLSAgICBmb3IgKEhh
c2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAg
ICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2Vj
dXJpdHlPcmlnaW4pKQotICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lcy5zaXpl
KCk7ICsraSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgU3RvcmFn
ZSogc3RvcmFnZSA9IGZyYW1lc1tpXS0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZShlYyk7Ci0g
ICAgICAgIGlmICghZWMpCi0gICAgICAgICAgICBmcmFtZXNbaV0tPmRvY3VtZW50KCktPmRpc3Bh
dGNoV2luZG93RXZlbnQoU3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VF
dmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybCwgc3RvcmFnZSkpOwotICAgIH0KLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oCShyZXZpc2lvbiAx
MTU1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlRXZlbnREaXNwYXRj
aGVySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXJJbXBsX2gKLSNkZWZpbmUgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGxf
aAotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTdG9yYWdlQXJlYS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEtVUkw7Ci1jbGFzcyBQYWdlR3JvdXA7
Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLQotY2xhc3MgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcklt
cGwgewotcHVibGljOgotICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsKGNvbnN0IFN0cmlu
ZyYgZ3JvdXBOYW1lKTsKLQotICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTZWN1cml0eU9yaWdpbiosCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBLVVJMJiwgU3RvcmFnZVR5cGUpOwotCi1wcml2
YXRlOgotICAgIFBhZ2VHcm91cCogbV9wYWdlR3JvdXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbF9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlckltcGwuY3BwCShyZXZpc2lvbiAxMTU1MjMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDE4ICsyOSwxOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oIgorI2luY2x1ZGUgIldlYlN0
b3JhZ2VFdmVudERpc3BhdGNoZXIuaCIKIAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJWaWV3SW1wbC5oIgogCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CisvLyBGSVhNRTogbW92
ZSB0aGlzIGZpbGUgdG8gV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKIAotZXh0ZXJuIGNv
bnN0IGNoYXIqIHBhZ2VHcm91cE5hbWU7CituYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJT
dG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KAogICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiBvbGRWYWx1ZSwKQEAgLTUw
LDcgKzUxLDcgQEAgdm9pZCBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaAogewog
ICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7CiAgICAgV2ViQ29yZTo6U3RvcmFn
ZUFyZWFQcm94eTo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKLSAgICAgICAgICAgIHBhZ2VH
cm91cE5hbWUsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwg
cGFnZVVSTCwKKyAgICAgICAgICAgIFdlYlZpZXdJbXBsOjpkZWZhdWx0UGFnZUdyb3VwKCksIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgcGFnZVVSTCwKICAg
ICAgICAgICAgIHNvdXJjZUFyZWFJbnN0YW5jZSwgb3JpZ2luYXRlZEluUHJvY2Vzcyk7CiB9CiAK
QEAgLTYyLDMxICs2Myw4IEBAIHZvaWQgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2gKIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
ID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4pOwogICAgIFdlYkNvcmU6
OlN0b3JhZ2VBcmVhUHJveHk6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCgKLSAgICAgICAg
ICAgIHBhZ2VHcm91cE5hbWUsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzZWN1cml0eU9yaWdp
bi5nZXQoKSwgcGFnZVVSTCwKKyAgICAgICAgICAgIFdlYlZpZXdJbXBsOjpkZWZhdWx0UGFnZUdy
b3VwKCksIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgcGFn
ZVVSTCwKICAgICAgICAgICAgIHNlc3Npb25OYW1lc3BhY2UsIHNvdXJjZUFyZWFJbnN0YW5jZSwg
b3JpZ2luYXRlZEluUHJvY2Vzcyk7CiB9CiAKLQotLy8gRklYTUU6IHJlbW92ZSB0aGUgV2ViU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlckltcGwgY2xhc3Mgc29vbi4KLQotV2ViU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlciogV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1
cm4gbmV3IFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsKCk7Ci19Ci0KLVdlYlN0b3JhZ2VF
dmVudERpc3BhdGNoZXJJbXBsOjpXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbCgpCi0gICAg
OiBtX2V2ZW50RGlzcGF0Y2hlcihhZG9wdFB0cihuZXcgV2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlz
cGF0Y2hlckltcGwocGFnZUdyb3VwTmFtZSkpKQotewotICAgIEFTU0VSVChtX2V2ZW50RGlzcGF0
Y2hlcik7Ci19Ci0KLXZvaWQgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGw6OmRpc3BhdGNo
U3RvcmFnZUV2ZW50KGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG9sZFZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJVUkwmIHBhZ2VVUkwsIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCi17Ci0gICAgV2Vi
Q29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUgPSBpc0xvY2FsU3RvcmFnZSA/IFdlYkNvcmU6
OkxvY2FsU3RvcmFnZSA6IFdlYkNvcmU6OlNlc3Npb25TdG9yYWdlOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pOwotICAgIG1fZXZlbnREaXNwYXRjaGVyLT5k
aXNwYXRjaFN0b3JhZ2VFdmVudChrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc2VjdXJpdHlPcmln
aW4uZ2V0KCksIHBhZ2VVUkwsIHN0b3JhZ2VUeXBlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlRXZlbnREaXNw
YXRjaGVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmgJKHJldmlzaW9uIDExNTUyMykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlckltcGxfaAotI2RlZmluZSBXZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbF9oCi0KLSNp
bmNsdWRlICJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5oIgotI2luY2x1ZGUgIldlYlN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi0vLyBERVBSRUNBVEVEIC0gdG8gYmUgcmVtb3ZlZCB3aGVuIHJlbW92aW5n
IHRoZSBpbnN0YW5jZSBtZXRob2RzIGluIHRoZSBwdWJsaWMgYXBpLgotY2xhc3MgV2ViU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlckltcGwgOiBwdWJsaWMgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciB7
Ci1wdWJsaWM6Ci0gICAgV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0
IFdlYlN0cmluZyYgb2xkVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlN0cmluZyYgb3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJVUkwmLCBib29s
IGlzTG9jYWxTdG9yYWdlKTsKLXByaXZhdGU6Ci0gICAgT3duUHRyPFdlYkNvcmU6OlN0b3JhZ2VF
dmVudERpc3BhdGNoZXJJbXBsPiBtX2V2ZW50RGlzcGF0Y2hlcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGxfaApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNp
b24gMTE1NTIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUyLDYgKzEyNTIsMTEgQEAgV2ViVmlld0ltcGwqIFdlYlZp
ZXdJbXBsOjpmcm9tUGFnZShQYWdlKgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJWaWV3SW1w
bCo+KGNocm9tZUNsaWVudC0+d2ViVmlldygpKTsKIH0KIAorUGFnZUdyb3VwKiBXZWJWaWV3SW1w
bDo6ZGVmYXVsdFBhZ2VHcm91cCgpCit7CisgICAgcmV0dXJuIFBhZ2VHcm91cDo6cGFnZUdyb3Vw
KHBhZ2VHcm91cE5hbWUpOworfQorCiAvLyBXZWJXaWRnZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OmNsb3NlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAkocmV2aXNpb24gMTE1NTIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBjbGFzcyBIaXN0
b3J5SXRlbTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xh
c3MgUGFnZTsKK2NsYXNzIFBhZ2VHcm91cDsKIGNsYXNzIFBhZ2VQb3B1cDsKIGNsYXNzIFBhZ2VQ
b3B1cENsaWVudDsKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0OwpAQCAtMzAwLDYg
KzMwMSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2ViVmlld0ltcGwqIGZyb21QYWdlKFdl
YkNvcmU6OlBhZ2UqKTsKIAorICAgIC8vIEEgcGFnZUdyb3VwIGlkZW50aWZpZXMgYSBuYW1lc3Bh
Y2Ugb2YgcGFnZXMuIFBhZ2UgZ3JvdXBzIGFyZSB1c2VkIG9uIE9TWAorICAgIC8vIGZvciBzb21l
IHByb2dyYW1zIHRoYXQgdXNlIEhUTUwgdmlld3MgdG8gZGlzcGxheSB0aGluZ3MgdGhhdCBkb24n
dCBzZWVtIGxpa2UKKyAgICAvLyB3ZWIgcGFnZXMgdG8gdGhlIHVzZXIgKHNvIHNob3VsZG4ndCBo
YXZlIHZpc2l0ZWQgbGluayBjb2xvcmluZykuIFdlIG9ubHkgdXNlCisgICAgLy8gb25lIHBhZ2Ug
Z3JvdXAuCisgICAgc3RhdGljIFdlYkNvcmU6OlBhZ2VHcm91cCogZGVmYXVsdFBhZ2VHcm91cCgp
OworCiAgICAgV2ViVmlld0NsaWVudCogY2xpZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2NsaWVudDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>