<?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>31168</bug_id>
          
          <creation_ts>2009-11-05 09:29:17 -0800</creation_ts>
          <short_desc>Add [HintAtomic] to IDLs to remove unnecessary string conversions in generated V8 DOM bindings</short_desc>
          <delta_ts>2009-11-18 12:10:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jens Alfke">jens</reporter>
          <assigned_to name="Jens Alfke">jens</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>160849</commentid>
    <comment_count>0</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-05 09:29:17 -0800</bug_when>
    <thetext>The IDL files use the [HintAtomic] annotation on a DOMString parameter to tell the code generator that the corresponding native method takes an AtomicString, not a regular String, for that parameter. Depending on the generated code, this can save some overhead by not requiring an additional implicit conversion from String to AtomicString.

This does not appear to make a difference in the JSC bindings, which use the C++ UString class regardless, but it does for V8. If [HintAtomic] is present, the generated V8 binding will call a utility function that returns an AtomicString directly (if possible using one that&apos;s already been cached for that V8 string); if not, it calls a function that returns a String, and will incur an implicit AtomicString(String) constructor call.

I found 40 &quot;in DOMString&quot; parameters in the IDL files that should be marked with &quot;[HintAtomic]&quot; but aren&apos;t. This patch adds the annotations.

(How I found them: I edited AtomicString.h and added the keyword &apos;explicit&apos; before the constructor that takes a String. The effect is to make it a compile error to implicitly convert a String to an AtomicString. Then I compiled the generated V8 DOM bindings, went through the resulting errors and added the appropriate annotations to the IDL, verifying that afterwards the errors went away.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160854</commentid>
    <comment_count>1</comment_count>
      <attachid>42573</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-05 10:02:53 -0800</bug_when>
    <thetext>Created attachment 42573
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160987</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-05 15:26:43 -0800</bug_when>
    <thetext>This doens&apos;t seem like a very good long term solution.  The optimal state you&apos;ve found with this patch is fragile.  Can&apos;t we get to this state some other way?  At minimum with a script to reproduce the work you had to do to know which attributes need this property?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161178</commentid>
    <comment_count>3</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-06 11:07:39 -0800</bug_when>
    <thetext>I agree this isn&apos;t optimal, but it&apos;s the way things are already implemented, and all I did was a bit of cleanup to bring the IDL annotations into sync with the current code. That&apos;s a win, if a small one.

I don&apos;t think there&apos;s any way to automatically keep in sync, because people can edit the native DOM headers whenever they want, and the code generator doesn&apos;t know anything about those headers, only what&apos;s described in the IDL.

One improvement would be to cause the bindings to fail to compile if this impedance mismatch occurred, i.e. after someone changed a parameter type from String to AtomicString in the DOM. Then at least we&apos;d find out right away and update the IDL. The reason this compiles anyway is something I filed bug 30187 &quot;implicit AtomicString constructor considered harmful&quot; about earlier.

We could perhaps use an #if in AtomicString.h, then do something like this in DerivedSourcesAllInOne.cpp:
    #define PREVENT_IMPLICIT_ATOMICSTRING
    #include &quot;AtomicString.h&quot;
This #define would activate the &apos;explicit&apos; keyword in AtomicString.h and cause compile errors on implicit String --&gt; AtomicString coercions.

Does that seem reasonable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162278</commentid>
    <comment_count>4</comment_count>
      <attachid>42907</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-10 16:32:17 -0800</bug_when>
    <thetext>Created attachment 42907
patch 2

I&apos;ve implemented what I described the other day:
- AtomicString.h adds the &apos;explicit&apos; keyword to the AtomicString(String) constructor, if NO_IMPLICIT_ATOMICSTRINGS is defined.
- DerivedSourcesAllInOne.cpp now #defines NO_IMPLICIT_ATOMICSTRINGS before #Including any headers.
The result is that missing any [HintAtomic] annotations in the IDL now causes a compile error.

I also had to add explicit AtomicString constructor calls to two headers that are included indirectly by DerivedSourcesAllInOne, to keep them from failing to compile in this new mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162282</commentid>
    <comment_count>5</comment_count>
      <attachid>42907</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 16:46:02 -0800</bug_when>
    <thetext>Comment on attachment 42907
patch 2

I think svn-create-patch will order the patches so the ChangeLog is at the top.  (It will also handle binary data if you ever need that.)

I think this change is a good idea.  I think we should consider getting rid of implicit String-&gt;AtomicString conversions all together.

I&apos;m not sure the naming is perfect here. I&apos;m not sure I have any better suggestion besides HintAtomic.

Maybe NO_IMPLICIT_ATOMICSTRING should be DISABLE_IMPLICIT_ATOMICSTRING?

ATOMICSTRING_CONVERSION seems like it might make more sense as EXPENSIVE_CONVERSION since it&apos;s hinting about the constructors.

Do we know how much work it would be to remove these implicit conversions all together?  Probably more work than it makes sense to try and do in one bug.

Clearly those SVG toString  methods should be changed to return String instead of AtomicString. :)  We should file a bug about that.

LGTM.  Please wait for a bit for Darin to see this and have a chance to comment if he wants to before you commit this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162283</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 16:46:22 -0800</bug_when>
    <thetext>CC folks who would have an opinion about this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162291</commentid>
    <comment_count>7</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-10 16:57:38 -0800</bug_when>
    <thetext>Yeah, I was trying out &quot;svn diff --cl ...&quot; but it doesn&apos;t seem to order the files as nicely. I&apos;ll go back to prepare-changelog.

&gt;I&apos;m not sure I have any better suggestion besides HintAtomic.

It&apos;s a pre-existing flag; do you think it&apos;s worth the trouble of renaming it?

&gt; Maybe NO_IMPLICIT_ATOMICSTRING should be DISABLE_IMPLICIT_ATOMICSTRING?
&gt; ATOMICSTRING_CONVERSION seems like it might make more sense as
&gt; EXPENSIVE_CONVERSION since it&apos;s hinting about the constructors.

I slightly prefer NO_, but it&apos;s not a big deal. I like EXPENSIVE_CONVERSION. If I end up needing to roll another revision of the patch due to Darin&apos;s feedback, I&apos;ll make these changes as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162317</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-10 19:00:56 -0800</bug_when>
    <thetext>I am really not excited about this change and would rather it not go in.  Cluttering the IDLs does not seem like a good solution here.  Can you please go into more detail as to why v8 cannot use the same strategy JSC uses?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162342</commentid>
    <comment_count>9</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-10 22:00:52 -0800</bug_when>
    <thetext>Sam - You misunderstand. The [HintAtomic] annotation went in a long time ago, probably in the initial implementation of V8 bindings; it would have been better to raise this objection back then. All I&apos;m doing is correcting a glitch where the annotation is missing in _some_ of the places where it&apos;s supposed to go.

In other words, the bug here is the _inconsistent_ use of [HintAtomic]. If you think it shouldn&apos;t be used at all, that&apos;s a separate issue; you could file a bug on that.

&gt; Can you please go
&gt; into more detail as to why v8 cannot use the same strategy JSC uses?

It&apos;s harder for V8 and C++ to share string data because V8 has a different memory model than JSC: it uses a generational GC heap instead of malloc/free. This means V8 objects don&apos;t exist in the same heap as native objects; they&apos;re also relocatable, which doesn&apos;t play well with StringImpl.

This complicates the bridging between JavaScript strings and WebCore. One of the side effects is that it incurs extra instructions and runtime work to convert a JS string into first a String and then an AtomicString, than to convert it directly to an AtomicString.

I appreciate your interest in the V8 bindings, and understand that from your point of view the IDL annotations not used by JSC are noise. However, this is a fact of life when different technologies are in use; from Chrome&apos;s perspective, the JSC-specific stuff in, for example, StringImpl.cpp is noise. Let&apos;s all just get along, and let patches specific to one environment be reviewed by people who are skilled in that environment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162364</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-10 23:37:17 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; One of
&gt; the side effects is that it incurs extra instructions and runtime work to
&gt; convert a JS string into first a String and then an AtomicString, than to
&gt; convert it directly to an AtomicString.

The same is true of JavaScriptCore. This requirement is identical and the problem is similar. However, when we solved the problem for JavaScriptCore we did it without adding additional hints to the IDL file.

Perhaps the tradeoff is additional clutter in AtomicString.h and PlatformString.h vs. clutter in the IDL files? If that is the case, I think the right tradeoff is to put the complexity in one place rather than having to keep the IDL files in sync with the underlying DOM classes.

I did not review the patch that added these new attributes to IDL files for V8, and I feel they create an unnecessary maintenance burden; we should be able to move bindings from String to AtomicString without changing IDL files. V8&apos;s bindings should use the same approach the JavaScriptCore bindings use to avoid creating the need to keep the IDL files in sync.

Don&apos;t be so quick to attribute this to hostility to the V8 project. I just think it&apos;s a design mistake that makes WebCore changes harder to make in the future.

However, also please do not equate JavaScriptCore, WebKit’s own JavaScript engine which has been part of the project since the beginning and evolved in lock step with the rest of WebKit, with V8, an external engine that was retrofitted in to WebKit by Google and which is not used by most people who use WebKit.

I&apos;m sorry we didn&apos;t notice this before. Last time Eric did not bring Sam and me in to the review process last time. That&apos;s the difference. We&apos;re not picking on you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162590</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-11 11:36:36 -0800</bug_when>
    <thetext>Firstly, I didn&apos;t misunderstand, I just don&apos;t want this to propagate.

Darin didn&apos;t mention it, but, there is a way to do this without cluttering the IDLs and PlatformString.h/AtomicString.h using C++ magic in the form of a StringConverter class.  A quick sketch of what this might look like is as follows:

class StringConverter {
    explicit StringConverter(const YourStringType&amp;);

    operator String();
    operator AtomicString();

private:
    const YourStringType&amp; m_string;
};

...

Then, when you want to pass a V8String to the WebCore DOM, you simply do (in this case for Document::getElementsByTagNameNS)

document-&gt;getElementsByTagNameNS(StringConverter(myV8String), StringConverter(myV8String));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163095</commentid>
    <comment_count>12</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-12 16:11:50 -0800</bug_when>
    <thetext>Sam -- I was coming to a similar conclusion about how to handle it. I&apos;ll look into implementing it that way. (The problem I can see is that multiple uses of a StringConverter will result in multiple conversions, but that may not be an issue given the way the bindings are structured.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163161</commentid>
    <comment_count>13</comment_count>
      <attachid>42907</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-12 18:49:31 -0800</bug_when>
    <thetext>Comment on attachment 42907
patch 2

Sam wants a different implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164351</commentid>
    <comment_count>14</comment_count>
      <attachid>43381</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-17 14:34:59 -0800</bug_when>
    <thetext>Created attachment 43381
path with different implementation

Here&apos;s a different implementation :)

No more IDL annotations. Instead, use a &apos;polymorphic return value&apos; pattern to generate the appropriate conversion function when a V8 value is assigned to either a String or AtomicString parameter. The V8Parameter class in V8Binding.h implements this — it&apos;s a wrapper for a v8 value with two conversion operators, to String or AtomicString. Each inlines the appropriate conversion function.

V8Parameter is templatized because there are three possible modes for conversion, depending on how null/undefined JavaScript values are to be converted.

A note on CodeGeneratorPM: In a few functions like GetNativeTypeFromSignature I changed a boolean &apos;isParameter&apos; parameter to a numeric &apos;parameterIndex&apos;. This isn&apos;t strictly necessary for this patch, but in the future I want to do some further optimization that will require knowing the parameter index at that point; I didn&apos;t manage to get that ready for this patch but I want to leave the parameter change in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164353</commentid>
    <comment_count>15</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-17 14:36:11 -0800</bug_when>
    <thetext>Oh, FYI: this results in a 9% speedup in the Dromaeo DOM Query test. (Other Dromaeo tests are unaffected within margin of error.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164453</commentid>
    <comment_count>16</comment_count>
      <attachid>43381</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-17 22:06:57 -0800</bug_when>
    <thetext>Comment on attachment 43381
path with different implementation

Looks good. Good approach.

&gt;      void setNameInternal(const String&amp; name)
&gt;      {   
&gt; -        m_name = name;
&gt; +        m_name = AtomicString(name);
&gt;      }

This function is never called. It should be removed instead of modified.

&gt; -        static AtomicString toString(bool type) { return type ? &quot;true&quot; : &quot;false&quot;; }
&gt; +        static AtomicString toString(bool type) { return AtomicString(type ? &quot;true&quot; : &quot;false&quot;); }

&gt; -        static AtomicString toString(int type) { return String::number(type); }
&gt; +        static AtomicString toString(int type) { return AtomicString(String::number(type)); }

&gt; -        static AtomicString toString(long type) { return String::number(type); }
&gt; +        static AtomicString toString(long type) { return AtomicString(String::number(type)); }

&gt; -        static AtomicString toString(const SVGLength&amp; type) { return type.valueAsString(); }
&gt; +        static AtomicString toString(const SVGLength&amp; type) { return AtomicString(type.valueAsString()); }

&gt; -        static AtomicString toString(float type) { return String::number(type); }
&gt; +        static AtomicString toString(float type) { return AtomicString(String::number(type)); }

&gt; -        static AtomicString toString(const FloatRect&amp; type) { return String::format(&quot;%f %f %f %f&quot;, type.x(), type.y(), type.width(), type.height()); }
&gt; +        static AtomicString toString(const FloatRect&amp; type) { return AtomicString(String::format(&quot;%f %f %f %f&quot;, type.x(), type.y(), type.width(), type.height())); }

&gt; -        static AtomicString toString(const String&amp; type) { return type; }
&gt; +        static AtomicString toString(const String&amp; type) { return AtomicString(type); }

I do not understand why these functions return AtomicString objects! If an AtomicString is really needed here, then we should have versions of these functions that make the atomic string directly because making the String first is not good for cases where the AtomicString already exists.

I haven&apos;t reviewed V8 binding code before, but elsewhere WebKit coding style says the data member should be called m_v8Object, not _v8Object.

It also seems curious to me to use a template class instead of three different classes for V8Parameter, and also a bit strange that class name doesn&apos;t mention &quot;string&quot; at all.&apos;

Otherwise seems fine. I&apos;ll say r=me but I would like some followup cleanup to the AtomicString issues if you&apos;re willing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164622</commentid>
    <comment_count>17</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-18 10:24:34 -0800</bug_when>
    <thetext>Thanks, Darin.

&gt;This function is never called. It should be removed instead of modified.

I just tried deleting it, but it turns out it is called, at CSSGrammar.y:700.

&gt;I do not understand why these functions return AtomicString objects!

Looks like they&apos;re only called by the PropertySynchronizer class, at SVGAnimatedProperty:477. The value gets stored into an Attribute as an AtomicString. So I can change those methods to return String and then just update PropertySynchronizer.

&gt;If an
&gt;AtomicString is really needed here, then we should have versions of these
&gt;functions that make the atomic string directly

That would require extending AtomicString&apos;s API to add number() and format() factory methods. Doesn&apos;t seem worth the effort unless this is a known performance bottleneck; is it?

&gt;It also seems curious to me to use a template class instead of three different
&gt;classes for V8Parameter, and also a bit strange that class name doesn&apos;t mention
&gt;&quot;string&quot; at all.&apos;

Using templates was the most compact way to do it since all I had to repeat were the method implementations, not the rest of the class boilerplate. The name doesn&apos;t have &quot;String&quot; because I think this class could be extended in the future to handle more of the the parameter bindings, by adding typecast operators for other types like bool, int, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164624</commentid>
    <comment_count>18</comment_count>
      <attachid>43441</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-18 10:26:17 -0800</bug_when>
    <thetext>Created attachment 43441
patch with updated SVG headers

Here are the changes to SVGAnimatedTemplate and SVGAnimatedProperty (and renaming the member variable). Look OK to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164645</commentid>
    <comment_count>19</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-18 11:58:49 -0800</bug_when>
    <thetext>Committed revision 51125.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164649</commentid>
    <comment_count>20</comment_count>
      <attachid>43441</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-18 12:10:21 -0800</bug_when>
    <thetext>Comment on attachment 43441
patch with updated SVG headers

Thank you jens for fixing the SVG property mess.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42573</attachid>
            <date>2009-11-05 10:02:53 -0800</date>
            <delta_ts>2009-11-10 16:32:17 -0800</delta_ts>
            <desc>patch</desc>
            <filename>idl_atomic.patch</filename>
            <type>text/plain</type>
            <size>25139</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDU2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMDktMTEtMDUgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
W0hpbnRBdG9taWNdIG1ldGFkYXRhIHRvIElETCBmaWxlcyB0byBtYXRjaCBBdG9taWNTdHJpbmcg
cGFyYW1zIGluIG5hdGl2ZSBBUEkuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB1bm5lY2Vzc2FyeSBT
dHJpbmctPkF0b21pY1N0cmluZyBjb252ZXJzaW9ucyBpbiBnZW5lcmF0ZWQgYmluZGluZ3MuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0czogbm8gbmV3IGZ1bmN0aW9uYWxpdHks
IGp1c3QgYW4gb3B0aW1pemF0aW9uLgorCisgICAgICAgICogZG9tL0JlZm9yZUxvYWRFdmVudC5p
ZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5p
ZGw6CisgICAgICAgICogZG9tL0Vycm9yRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9FdmVudC5p
ZGw6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9NZXNz
YWdlRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50LmlkbDoKKyAgICAgICAgKiBk
b20vTXV0YXRpb25FdmVudC5pZGw6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAq
IGRvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVu
dC5pZGw6CisgICAgICAgICogZG9tL1RleHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1VJRXZl
bnQuaWRsOgorICAgICAgICAqIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5pZGw6CisgICAgICAg
ICogZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxT
dHlsZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6
CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZUFycmF5LmlkbDoKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpbi5pZGw6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5BcnJheS5pZGw6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2UuaWRsOgorICAgICAgICAqIHN2
Zy9TVkdTVkdFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50LmlkbDoK
KwogMjAwOS0xMS0wNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2RvbS9C
ZWZvcmVMb2FkRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0JlZm9yZUxvYWRF
dmVudC5pZGwJKHJldmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBtb2R1bGUgZXZlbnRzIHsKICAg
ICBpbnRlcmZhY2UgWwogICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCiAgICAgXSBCZWZvcmVM
b2FkRXZlbnQgOiBFdmVudCB7Ci0gICAgICAgIHZvaWQgaW5pdEJlZm9yZUxvYWRFdmVudChpbiBE
T01TdHJpbmcgdHlwZSwKKyAgICAgICAgdm9pZCBpbml0QmVmb3JlTG9hZEV2ZW50KGluIFtIaW50
QXRvbWljXSBET01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIGJvb2xlYW4gY2FuQnViYmxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIGJvb2xlYW4gY2FuY2VsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIERPTVN0cmluZyB1cmwpOwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
bW9kdWxlIGNvcmUgewogICAgICAgICBbT2xkU3R5bGVPYmpDLCBSZXR1cm5zTmV3XSBBdHRyIGNy
ZWF0ZUF0dHJpYnV0ZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5h
bWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBxdWFs
aWZpZWROYW1lKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgICAgICBb
T2xkU3R5bGVPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgW09sZFN0
eWxlT2JqQ10gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBbQ29udmVydE51bGxU
b051bGxTdHJpbmcsIEhpbnRBdG9taWNdIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3Ry
aW5nIGxvY2FsTmFtZSk7CiAgICAgICAgIEVsZW1lbnQgICAgICAgICAgICBnZXRFbGVtZW50QnlJ
ZChpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CiAKSW5kZXg6IFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShy
ZXZpc2lvbiA1MDQ4OSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW09sZFN0eWxlT2JqQ10g
dm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSkKICAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgICAgICBbT2xkU3R5bGVPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5
VGFnTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFj
ZVVSSSwKKyAgICAgICAgW09sZFN0eWxlT2JqQ10gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05h
bWVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEhpbnRBdG9taWNdIERPTVN0cmluZyBu
YW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAgICAgICAgIFtPbGRTdHlsZU9i
akNdIEF0dHIgZ2V0QXR0cmlidXRlTm9kZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CkluZGV4OiBXZWJDb3JlL2Rv
bS9FcnJvckV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FcnJvckV2ZW50Lmlk
bAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJDb3JlL2RvbS9FcnJvckV2ZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBmaWxlbmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGluZW5vOwogCi0gICAgICAgIHZvaWQgaW5pdEVycm9yRXZlbnQo
aW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFu
IGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBtZXNzYWdlQXJnLCBpbiBET01TdHJpbmcgZmls
ZW5hbWVBcmcsIGluIHVuc2lnbmVkIGxvbmcgbGluZW5vQXJnKTsKKyAgICAgICAgdm9pZCBpbml0
RXJyb3JFdmVudChpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4g
Y2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBtZXNz
YWdlQXJnLCBpbiBET01TdHJpbmcgZmlsZW5hbWVBcmcsIGluIHVuc2lnbmVkIGxvbmcgbGluZW5v
QXJnKTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuaWRsCShyZXZpc2lvbiA1MDQ4OSkKKysrIFdlYkNvcmUv
ZG9tL0V2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBtb2R1bGUgZXZl
bnRzIHsKICNlbmRpZgogICAgICAgICB2b2lkICAgICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9u
KCk7CiAgICAgICAgIHZvaWQgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdCgpOwotICAgICAg
ICBbT2xkU3R5bGVPYmpDXSB2b2lkIGluaXRFdmVudChpbiBET01TdHJpbmcgZXZlbnRUeXBlQXJn
LCAKKyAgICAgICAgW09sZFN0eWxlT2JqQ10gdm9pZCBpbml0RXZlbnQoaW4gW0hpbnRBdG9taWNd
IERPTVN0cmluZyBldmVudFR5cGVBcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZyk7CiAKSW5kZXg6IFdlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0tleWJv
YXJkRXZlbnQuaWRsCShyZXZpc2lvbiA1MDQ4OSkKKysrIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG1vZHVsZSBldmVudHMgewog
I2VuZGlmCiAKICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNp
b24gaW4gdGhlIERPTSBzcGVjLgotICAgICAgICB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGluIERP
TVN0cmluZyB0eXBlLCAKKyAgICAgICAgdm9pZCBpbml0S2V5Ym9hcmRFdmVudChpbiBbSGludEF0
b21pY10gRE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGJvb2xlYW4gY2FuQnViYmxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBi
b29sZWFuIGNhbmNlbGFibGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERP
TVdpbmRvdyB2aWV3LCAKQEAgLTYzLDcgKzYzLDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgIGtleUNvZGU7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgIGNoYXJDb2RlOwogICAgICAgICAKLSAg
ICAgICAgdm9pZCBpbml0S2V5Ym9hcmRFdmVudChpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAg
IHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBlLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZSwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01XaW5kb3cgdmlldywgCkluZGV4OiBX
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5pZGwJKHJldmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDEyIEBAIG1vZHVsZSBldmVudHMg
ewogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQ
VAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcl0gQXJyYXkgcG9ydHM7
CiAKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0
eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJn
LCBpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFy
ZywgaW4gRE9NU3RyaW5nIGxhc3RFdmVudElkQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnLCBp
biBBcnJheSBtZXNzYWdlUG9ydHMpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGluaXRNZXNzYWdl
RXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1
YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NU3RyaW5nIGxhc3RFdmVu
dElkQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnLCBpbiBBcnJheSBtZXNzYWdlUG9ydHMpOwog
I2Vsc2UKICAgICAgICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkg
dmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgZXhwb3NlIGEgc2luZ2xlIHBv
cnQuCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydDsK
IAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGlu
IGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJnLCBpbiBET01T
dHJpbmcgbGFzdEV2ZW50SWRBcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcsIGluIE1lc3NhZ2VQ
b3J0IG1lc3NhZ2VQb3J0KTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIFtIaW50
QXRvbWljXSBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJv
b2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGFBcmcsIGlu
IERPTVN0cmluZyBvcmlnaW5BcmcsIGluIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgaW4gRE9N
V2luZG93IHNvdXJjZUFyZywgaW4gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpOwogI2VuZGlmCiAK
ICAgICB9OwpJbmRleDogV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwJKHJldmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9k
b20vTW91c2VFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbW9kdWxl
IGV2ZW50cyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCAgIGJ1
dHRvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEV2ZW50VGFyZ2V0ICAgICAgcmVsYXRl
ZFRhcmdldDsKICAgICAgICAgCi0gICAgICAgIFtPbGRTdHlsZU9iakNdIHZvaWQgaW5pdE1vdXNl
RXZlbnQoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICBbT2xkU3R5bGVPYmpDXSB2b2lkIGlu
aXRNb3VzZUV2ZW50KGluIFtIaW50QXRvbWljXSBET01TdHJpbmcgdHlwZSwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGUsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2Fu
Y2VsYWJsZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RE9NV2luZG93IHZpZXcsIApJbmRleDogV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5pZGwJKHJldmlzaW9uIDUwNDg5
KQorKysgV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgICAgICBhdHRyTmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIHNob3J0IGF0dHJDaGFuZ2U7CiAKLSAgICAgICAgW09sZFN0eWxlT2JqQ10gdm9pZCBpbml0
TXV0YXRpb25FdmVudChpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgIFtPbGRTdHlsZU9iakNd
IHZvaWQgaW5pdE11dGF0aW9uRXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBlLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFu
IGNhbkJ1YmJsZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBOb2RlIHJlbGF0ZWROb2RlLCAKSW5kZXg6IFdlYkNvcmUvZG9t
L05vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuaWRsCShyZXZpc2lvbiA1
MDQ4OSkKKysrIFdlYkNvcmUvZG9tL05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4
Nyw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB2ZXJzaW9uKTsK
IAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0g
RE9NU3RyaW5nICAgICAgICBuYW1lc3BhY2VVUkk7Ci0gICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsLCBDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9N
U3RyaW5nICAgICAgICBwcmVmaXgKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPU51bGwsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBIaW50QXRvbWljXSBE
T01TdHJpbmcgICAgICAgIHByZWZpeAogICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
U3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nICAgICAgICBsb2NhbE5hbWU7CiAKQEAgLTEwMyw4ICsx
MDMsOCBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgYm9vbGVhbiAgICAgICAgICAgIGlzU2Ft
ZU5vZGUoaW4gTm9kZSBvdGhlcik7CiAgICAgICAgIGJvb2xlYW4gICAgICAgICAgICBpc0VxdWFs
Tm9kZShpbiBOb2RlIG90aGVyKTsKLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0g
RE9NU3RyaW5nICAgICAgICAgIGxvb2t1cFByZWZpeChpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkkpOwotICAgICAgICBib29sZWFuICAgICAgICAgICAg
aXNEZWZhdWx0TmFtZXNwYWNlKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IG5hbWVzcGFjZVVSSSk7CisgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0
cmluZyAgICAgICAgICBsb29rdXBQcmVmaXgoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBI
aW50QXRvbWljXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJKTsKKyAgICAgICAgYm9vbGVhbiAgICAg
ICAgICAgIGlzRGVmYXVsdE5hbWVzcGFjZShpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEhp
bnRBdG9taWNdIERPTVN0cmluZyBuYW1lc3BhY2VVUkkpOwogICAgICAgICBbQ29udmVydE51bGxT
dHJpbmdUbz1OdWxsXSBET01TdHJpbmcgICAgICAgICAgbG9va3VwTmFtZXNwYWNlVVJJKGluIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHByZWZpeCk7CiAKICAgICAgICAgLy8g
RG9jdW1lbnRQb3NpdGlvbgpJbmRleDogV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5pZGwJKHJl
dmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gcGVyc2lzdGVkOwogCi0gICAgICAgIHZvaWQgaW5p
dFBhZ2VUcmFuc2l0aW9uRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2Fu
QnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIGJvb2xlYW4gcGVyc2lzdGVk
KTsKKyAgICAgICAgdm9pZCBpbml0UGFnZVRyYW5zaXRpb25FdmVudChpbiBbSGludEF0b21pY10g
RE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNh
bmNlbGFibGVBcmcsIGluIGJvb2xlYW4gcGVyc2lzdGVkKTsKICAgICB9OwogCiB9CkluZGV4OiBX
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Q
cm9ncmVzc0V2ZW50LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJDb3JlL2RvbS9Qcm9ncmVz
c0V2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBtb2R1bGUgZXZlbnRz
IHsKICAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgbGVuZ3RoQ29t
cHV0YWJsZTsKICAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgbG9h
ZGVkOwogICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgICB0b3RhbDsK
LSAgICAgICAgIHZvaWQgICAgICAgICAgICAgICBpbml0UHJvZ3Jlc3NFdmVudChpbiBET01TdHJp
bmcgdHlwZUFyZywKKyAgICAgICAgIHZvaWQgICAgICAgICAgICAgICBpbml0UHJvZ3Jlc3NFdmVu
dChpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIHR5cGVBcmcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiAgICAgICBjYW5CdWJibGVBcmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVh
biAgICAgICBjYW5jZWxhYmxlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIGJvb2xlYW4gICAgICAgbGVuZ3RoQ29tcHV0YWJsZUFyZywKSW5kZXg6
IFdlYkNvcmUvZG9tL1RleHRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVGV4
dEV2ZW50LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG1vZHVsZSBldmVudHMgewogCiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKIAotICAgICAgICB2b2lkIGlu
aXRUZXh0RXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICB2b2lkIGluaXRUZXh0
RXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBlQXJnLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBET01XaW5kb3cgdmlld0FyZywgCkluZGV4OiBXZWJDb3JlL2RvbS9VSUV2ZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAkocmV2aXNpb24gNTA0
ODkpCisrKyBXZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdp
bmRvdyAgICAgICAgICAgIHZpZXc7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAg
ICAgICAgICAgICAgICBkZXRhaWw7CiAgICAgICAgIAotICAgICAgICBbT2xkU3R5bGVPYmpDXSB2
b2lkIGluaXRVSUV2ZW50KGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgW09sZFN0eWxlT2Jq
Q10gdm9pZCBpbml0VUlFdmVudChpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIHR5cGUsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuQnViYmxl
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNh
bmNlbGFibGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERP
TVdpbmRvdyB2aWV3LCAKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5pZGwJKHJl
dmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBldmVudHMgewogICAgIF0gV2Vi
S2l0QW5pbWF0aW9uRXZlbnQgOiBFdmVudCB7CiAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgICAgICAgICAgYW5pbWF0aW9uTmFtZTsKICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRv
dWJsZSAgICAgICAgICAgICBlbGFwc2VkVGltZTsKLSAgICAgdm9pZCAgICAgICAgICAgICAgIGlu
aXRXZWJLaXRBbmltYXRpb25FdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywKKyAgICAgdm9pZCAg
ICAgICAgICAgICAgIGluaXRXZWJLaXRBbmltYXRpb25FdmVudChpbiBbSGludEF0b21pY10gRE9N
U3RyaW5nIHR5cGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBhbmltYXRpb25OYW1lQXJn
LApJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiA1MDQ4
OSkKKysrIFdlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgXSBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQgOiBFdmVudCB7CiAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAg
ICAgICAgcHJvcGVydHlOYW1lOwogICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlICAgICAg
ICAgICAgIGVsYXBzZWRUaW1lOwotICAgICB2b2lkICAgICAgICAgICAgICAgaW5pdFdlYktpdFRy
YW5zaXRpb25FdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywKKyAgICAgdm9pZCAgICAgICAgICAg
ICAgIGluaXRXZWJLaXRUcmFuc2l0aW9uRXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0
eXBlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJv
b2xlYW4gY2FuQnViYmxlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgcHJvcGVydHlOYW1lQXJnLApJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MDQ4OSkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgYWNjZXNzS2V5OwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGRpc2FibGVkOwogICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGF1dG9mb2N1czsKLSAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyAgICAgICAgICAgIG5hbWU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nLCBIaW50QXRvbWljXSBET01TdHJpbmcgICAgICAgICAgICBuYW1l
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAgICAgIHR5cGU7
CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgICAgICAgICAgICB2YWx1ZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gICAgICAgICAgICAgICB3aWxsVmFsaWRhdGU7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaWRsCShyZXZpc2lvbiA1MDQ4OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG1pbjsKICNlbmRp
ZgogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIG11bHRpcGxlOwot
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZywgSGludEF0b21pY10gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHBhdHRlcm47CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgcGxhY2Vob2xkZXI7CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVhZE9ubHk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5pZGwJKHJldmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBtb2R1bGUg
aHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgZGlzYWJs
ZWQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgYXV0b2ZvY3Vz
OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIG11bHRpcGxlOwot
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgICAgICAgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZywgSGludEF0b21pY10gRE9NU3RyaW5nICAgICAgIG5hbWU7CiAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgc2l6ZTsKICAgICAgICAgCiAgICAg
ICAgIFtPbGRTdHlsZU9iakNdIHZvaWQgYWRkKGluIEhUTUxFbGVtZW50IGVsZW1lbnQsIApAQCAt
NzEsNyArNzEsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IG5vdCBpbiBET00gTGV2ZWwgMiBJREwsIGJ1dCBhcmUgbWVudGlvbmVkIGluIHRoZSBzdGFuZGFy
ZDoKICAgICAgICAgLy8gIlRoZSBjb250YWluZWQgb3B0aW9ucyBjYW4gYmUgZGlyZWN0bHkgYWNj
ZXNzZWQgdGhyb3VnaCB0aGUgc2VsZWN0IGVsZW1lbnQgYXMgYSBjb2xsZWN0aW9uLiIKICAgICAg
ICAgTm9kZSBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICAgICAg
Tm9kZSBuYW1lZEl0ZW0oaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBOb2RlIG5hbWVkSXRl
bShpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIG5hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5pZGwJKHJldmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBAIG1v
ZHVsZSBodG1sIHsKICAgICAgICAgSW1wbGVtZW50YXRpb25VVUlEPTczMDI0YTU1LWI4YTEtNDYx
Yi1hZDg1LWJlZmE0MDg5ZjgwZAogICAgIF0gSFRNTFN0eWxlRWxlbWVudCA6IEhUTUxFbGVtZW50
IHsKICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBkaXNhYmxlZDsKLSAg
ICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAg
ICAgICAgIG1lZGlhOwotICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKKyAgICAgICAgYXR0cmlidXRlICBbQ29udmVy
dE51bGxUb051bGxTdHJpbmcsIEhpbnRBdG9taWNdIERPTVN0cmluZyAgICAgICAgICAgIG1lZGlh
OworICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgSGludEF0b21p
Y10gRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX0NP
TSkgfHwgIUxBTkdVQUdFX0NPTQogICAgICAgICAvLyBET00gTGV2ZWwgMiBTdHlsZQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xl
YW4gICAgICAgICAgICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBs
b25nICAgICAgICAgICAgICAgICBtYXhMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgIHNldHRl
ciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29u
dmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIG5hbWU7CisgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBIaW50QXRvbWlj
XSBET01TdHJpbmcgICAgICAgICAgICBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgcGxhY2Vob2xk
ZXI7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgcmVh
ZE9ubHk7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAg
cmVxdWlyZWQ7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsCShyZXZpc2lvbiA1MDQ4
OSkKKysrIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICBdIE1pbWVUeXBlQXJyYXkgewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAg
IE1pbWVUeXBlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgICAgIE1pbWVUeXBl
IG5hbWVkSXRlbShpbiBET01TdHJpbmcgbmFtZSk7CisgICAgICAgIE1pbWVUeXBlIG5hbWVkSXRl
bShpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIG5hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdl
YkNvcmUvcGx1Z2lucy9QbHVnaW4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW4uaWRsCShyZXZpc2lvbiA1MDQ4OSkKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2NyaXB0aW9uOwogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIE1pbWVUeXBlIGl0
ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgICAgIE1pbWVUeXBlIG5hbWVkSXRlbShp
biBET01TdHJpbmcgbmFtZSk7CisgICAgICAgIE1pbWVUeXBlIG5hbWVkSXRlbShpbiBbSGludEF0
b21pY10gRE9NU3RyaW5nIG5hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5BcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFy
cmF5LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luQXJyYXku
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAg
IF0gUGx1Z2luQXJyYXkgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsZW5ndGg7CiAgICAgICAgIFBsdWdpbiBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwot
ICAgICAgICBQbHVnaW4gbmFtZWRJdGVtKGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgUGx1
Z2luIG5hbWVkSXRlbShpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICB2
b2lkIHJlZnJlc2goaW4gYm9vbGVhbiByZWxvYWQpOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlRXZlbnQuaWRsCShyZXZpc2lvbiA1MDQ4OSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG1vZHVsZSBzdG9y
YWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51
bGxdIERPTVN0cmluZyBuZXdWYWx1ZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB1cmk7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIHN0b3JhZ2VBcmVh
OwotICAgICAgICB2b2lkIGluaXRTdG9yYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGlu
IGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0
cmluZyBrZXlBcmcsIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG9sZFZh
bHVlQXJnLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuZXdWYWx1ZUFy
ZywgaW4gRE9NU3RyaW5nIHVyaUFyZywgaW4gU3RvcmFnZSBzdG9yYWdlQXJlYUFyZyk7CisgICAg
ICAgIHZvaWQgaW5pdFN0b3JhZ2VFdmVudChpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIHR5cGVB
cmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGlu
IERPTVN0cmluZyBrZXlBcmcsIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IG9sZFZhbHVlQXJnLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuZXdW
YWx1ZUFyZywgaW4gRE9NU3RyaW5nIHVyaUFyZywgaW4gU3RvcmFnZSBzdG9yYWdlQXJlYUFyZyk7
CiAKICAgICAgICAgLy8gTmVlZGVkIG9uY2Ugd2Ugc3VwcG9ydCBpbml0PGJsYW5rPkV2ZW50TlMK
ICAgICAgICAgLy8gdm9pZCBpbml0U3RvcmFnZUV2ZW50TlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFj
ZVVSSSwgaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBi
b29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBrZXlBcmcsIGluIERPTVN0cmluZyBv
bGRWYWx1ZUFyZywgaW4gRE9NU3RyaW5nIG5ld1ZhbHVlQXJnLCBpbiBET01TdHJpbmcgdXJpQXJn
LCBpbiBTdG9yYWdlIHN0b3JhZ2VBcmVhQXJnKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVt
ZW50LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiBtb2R1bGUgc3ZnIHsKIAog
ICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJlNWR19GT05UU10gU1ZHQWx0R2x5cGhFbGVt
ZW50IDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNlIHsKLSAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBnbHlwaFJlZgorICAgICAgICBhdHRyaWJ1dGUgW0hpbnRB
dG9taWNdIERPTVN0cmluZyBnbHlwaFJlZgogICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvcm1hdAorICAgICAgICBh
dHRyaWJ1dGUgW0hpbnRBdG9taWNdIERPTVN0cmluZyBmb3JtYXQKICAgICAgICAgICAgIHNldHRl
ciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdM
YW5nU3BhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5pZGwJ
KHJldmlzaW9uIDUwNDg5KQorKysgV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogbW9kdWxlIHN2ZyB7CiAKICAgICBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPVNWRywgT2JqQ1Byb3RvY29sXSBTVkdMYW5nU3BhY2UgewotICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgY29yZTo6RE9NU3RyaW5nIHhtbGxhbmcKKyAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIFtIaW50QXRvbWljXSBjb3JlOjpET01TdHJpbmcgeG1sbGFuZwogICAgICAg
ICAgICAgICAgICAgICAgLypzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbikqLzsKLSAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0cmluZyB4bWxzcGFjZQorICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgW0hpbnRBdG9taWNdIGNvcmU6OkRPTVN0cmluZyB4bWxzcGFjZQogICAg
ICAgICAgICAgICAgICAgICAgLypzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbikqLzsKICAgICB9
OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOSBAQCBt
b2R1bGUgc3ZnIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3Ro
IHk7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsKLSAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0cmluZyBjb250ZW50U2NyaXB0VHlw
ZQorICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0hpbnRBdG9taWNdIGNvcmU6OkRPTVN0cmlu
ZyBjb250ZW50U2NyaXB0VHlwZQogICAgICAgICAgICAgICAgICAgICAgLypzZXR0ZXIgcmFpc2Vz
KERPTUV4Y2VwdGlvbikqLzsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0
cmluZyBjb250ZW50U3R5bGVUeXBlCisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbSGludEF0
b21pY10gY29yZTo6RE9NU3RyaW5nIGNvbnRlbnRTdHlsZVR5cGUKICAgICAgICAgICAgICAgICAg
ICAgIC8qc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pKi87CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbSW1tdXRhYmxlXSBTVkdSZWN0IHZpZXdwb3J0OwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgZmxvYXQgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWDsKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmlkbAkocmV2aXNpb24gNTA0ODkpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTEgQEAgbW9kdWxlIHN2ZyB7CiAK
ICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWR10gU1ZHU3R5bGVFbGVtZW50IDogU1ZHRWxl
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1ZHTGFuZ1NwYWNlIHsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0cmlu
ZyB0eXBlCisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbSGludEF0b21pY10gY29yZTo6RE9N
U3RyaW5nIHR5cGUKICAgICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0cmluZyBtZWRpYQor
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0hpbnRBdG9taWNdIGNvcmU6OkRPTVN0cmluZyBt
ZWRpYQogICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwot
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgY29yZTo6RE9NU3RyaW5nIHRpdGxlCisgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBbSGludEF0b21pY10gY29yZTo6RE9NU3RyaW5nIHRpdGxlCiAg
ICAgICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42907</attachid>
            <date>2009-11-10 16:32:17 -0800</date>
            <delta_ts>2009-11-17 14:34:59 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>textmate stdin OuDumc.txt</filename>
            <type>text/plain</type>
            <size>30290</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBACiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxs
XSBET01TdHJpbmcgbmV3VmFsdWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgdXJpOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RvcmFnZSBzdG9yYWdlQXJlYTsK
LSAgICAgICAgdm9pZCBpbml0U3RvcmFnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBi
b29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJp
bmcga2V5QXJnLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBvbGRWYWx1
ZUFyZywgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmV3VmFsdWVBcmcs
IGluIERPTVN0cmluZyB1cmlBcmcsIGluIFN0b3JhZ2Ugc3RvcmFnZUFyZWFBcmcpOworICAgICAg
ICB2b2lkIGluaXRTdG9yYWdlRXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBlQXJn
LCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBE
T01TdHJpbmcga2V5QXJnLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBv
bGRWYWx1ZUFyZywgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmV3VmFs
dWVBcmcsIGluIERPTVN0cmluZyB1cmlBcmcsIGluIFN0b3JhZ2Ugc3RvcmFnZUFyZWFBcmcpOwog
CiAgICAgICAgIC8vIE5lZWRlZCBvbmNlIHdlIHN1cHBvcnQgaW5pdDxibGFuaz5FdmVudE5TCiAg
ICAgICAgIC8vIHZvaWQgaW5pdFN0b3JhZ2VFdmVudE5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VV
UkksIGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9v
bGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcga2V5QXJnLCBpbiBET01TdHJpbmcgb2xk
VmFsdWVBcmcsIGluIERPTVN0cmluZyBuZXdWYWx1ZUFyZywgaW4gRE9NU3RyaW5nIHVyaUFyZywg
aW4gU3RvcmFnZSBzdG9yYWdlQXJlYUFyZyk7CkluZGV4OiBXZWJDb3JlL2RvbS9QYWdlVHJhbnNp
dGlvbkV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2
ZW50LmlkbAkocmV2aXNpb24gNTA3NTYpCisrKyBXZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIHBlcnNpc3RlZDsKIAotICAgICAgICB2b2lkIGluaXRQYWdl
VHJhbnNpdGlvbkV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJs
ZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBib29sZWFuIHBlcnNpc3RlZCk7Cisg
ICAgICAgIHZvaWQgaW5pdFBhZ2VUcmFuc2l0aW9uRXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0
cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxh
YmxlQXJnLCBpbiBib29sZWFuIHBlcnNpc3RlZCk7CiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIHNob3J0ICAgYnV0dG9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRXZl
bnRUYXJnZXQgICAgICByZWxhdGVkVGFyZ2V0OwogICAgICAgICAKLSAgICAgICAgW09sZFN0eWxl
T2JqQ10gdm9pZCBpbml0TW91c2VFdmVudChpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgIFtP
bGRTdHlsZU9iakNdIHZvaWQgaW5pdE1vdXNlRXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmlu
ZyB0eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBi
b29sZWFuIGNhbkJ1YmJsZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBET01XaW5kb3cgdmlldywgCkluZGV4OiBXZWJDb3JlL2RvbS9F
cnJvckV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FcnJvckV2ZW50LmlkbAko
cmV2aXNpb24gNTA3NTYpCisrKyBXZWJDb3JlL2RvbS9FcnJvckV2ZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGZpbGVuYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBs
aW5lbm87CiAKLSAgICAgICAgdm9pZCBpbml0RXJyb3JFdmVudChpbiBET01TdHJpbmcgdHlwZUFy
ZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4g
RE9NU3RyaW5nIG1lc3NhZ2VBcmcsIGluIERPTVN0cmluZyBmaWxlbmFtZUFyZywgaW4gdW5zaWdu
ZWQgbG9uZyBsaW5lbm9BcmcpOworICAgICAgICB2b2lkIGluaXRFcnJvckV2ZW50KGluIFtIaW50
QXRvbWljXSBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJv
b2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIG1lc3NhZ2VBcmcsIGluIERPTVN0cmlu
ZyBmaWxlbmFtZUFyZywgaW4gdW5zaWduZWQgbG9uZyBsaW5lbm9BcmcpOwogICAgIH07CiAKIH0K
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAgICAgICAgIFtPbGRTdHlsZU9i
akMsIFJldHVybnNOZXddIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoaW4gW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7Ci0gICAgICAgIFtPbGRTdHlsZU9iakNdIE5vZGVMaXN0IGdldEVsZW1lbnRz
QnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNw
YWNlVVJJLAorICAgICAgICBbT2xkU3R5bGVPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFn
TmFtZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgSGludEF0b21pY10gRE9NU3RyaW5n
IG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICAgICAgRWxlbWVudCAg
ICAgICAgICAgIGdldEVsZW1lbnRCeUlkKGluIFtIaW50QXRvbWljXSBET01TdHJpbmcgZWxlbWVu
dElkKTsKIApJbmRleDogV2ViQ29yZS9kb20vVUlFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vVUlFdmVudC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9kb20vVUlF
dmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVdpbmRvdyAgICAgICAgICAgIHZpZXc7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgICAgICBkZXRhaWw7CiAgICAgICAgIAotICAgICAg
ICBbT2xkU3R5bGVPYmpDXSB2b2lkIGluaXRVSUV2ZW50KGluIERPTVN0cmluZyB0eXBlLCAKKyAg
ICAgICAgW09sZFN0eWxlT2JqQ10gdm9pZCBpbml0VUlFdmVudChpbiBbSGludEF0b21pY10gRE9N
U3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGJvb2xlYW4gY2FuQnViYmxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBib29sZWFuIGNhbmNlbGFibGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIERPTVdpbmRvdyB2aWV3LCAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5pZGwJKHJldmlzaW9uIDUwNzU2
KQorKysgV2ViQ29yZS9kb20vRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBACiAjZW5kaWYKICAgICAgICAgdm9pZCAgICAgICAgICAgICAgIHN0b3BQcm9wYWdhdGlvbigp
OwogICAgICAgICB2b2lkICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQoKTsKLSAgICAgICAg
W09sZFN0eWxlT2JqQ10gdm9pZCBpbml0RXZlbnQoaW4gRE9NU3RyaW5nIGV2ZW50VHlwZUFyZywg
CisgICAgICAgIFtPbGRTdHlsZU9iakNdIHZvaWQgaW5pdEV2ZW50KGluIFtIaW50QXRvbWljXSBE
T01TdHJpbmcgZXZlbnRUeXBlQXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcpOwogCkluZGV4OiBXZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDEyIEBACiAjaWYgZGVmaW5lZChMQU5HVUFH
RV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBwb3J0czsKIAotICAgICAgICBbQ3VzdG9tXSB2
b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2Fu
QnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBkYXRhQXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJnLCBpbiBET01TdHJpbmcgbGFzdEV2
ZW50SWRBcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcsIGluIEFycmF5IG1lc3NhZ2VQb3J0cyk7
CisgICAgICAgIFtDdXN0b21dIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChpbiBbSGludEF0b21pY10g
RE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNh
bmNlbGFibGVBcmcsIGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCBpbiBET01TdHJp
bmcgb3JpZ2luQXJnLCBpbiBET01TdHJpbmcgbGFzdEV2ZW50SWRBcmcsIGluIERPTVdpbmRvdyBz
b3VyY2VBcmcsIGluIEFycmF5IG1lc3NhZ2VQb3J0cyk7CiAjZWxzZQogICAgICAgICAvLyBUaGVy
ZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3Ms
IHNvIGZvciBub3cganVzdCBleHBvc2UgYSBzaW5nbGUgcG9ydC4KICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0OwogCi0gICAgICAgIHZvaWQgaW5pdE1l
c3NhZ2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcs
IGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGFB
cmcsIGluIERPTVN0cmluZyBvcmlnaW5BcmcsIGluIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywg
aW4gRE9NV2luZG93IHNvdXJjZUFyZywgaW4gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpOworICAg
ICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBl
QXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBp
biBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywg
aW4gRE9NU3RyaW5nIGxhc3RFdmVudElkQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnLCBpbiBN
ZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCk7CiAjZW5kaWYKIAogICAgIH07CkluZGV4OiBXZWJDb3Jl
L2RvbS9UZXh0RXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RleHRFdmVudC5p
ZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9kb20vVGV4dEV2ZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgZGF0YTsKIAotICAgICAgICB2b2lkIGluaXRUZXh0RXZlbnQoaW4gRE9NU3RyaW5n
IHR5cGVBcmcsIAorICAgICAgICB2b2lkIGluaXRUZXh0RXZlbnQoaW4gW0hpbnRBdG9taWNdIERP
TVN0cmluZyB0eXBlQXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4g
Y2FuQnViYmxlQXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2Fu
Y2VsYWJsZUFyZywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01XaW5kb3cgdmll
d0FyZywgCkluZGV4OiBXZWJDb3JlL2RvbS9CZWZvcmVMb2FkRXZlbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysg
V2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKICAg
ICBdIEJlZm9yZUxvYWRFdmVudCA6IEV2ZW50IHsKLSAgICAgICAgdm9pZCBpbml0QmVmb3JlTG9h
ZEV2ZW50KGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICB2b2lkIGluaXRCZWZvcmVMb2FkRXZl
bnQoaW4gW0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGUsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHVybCk7CkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRB
bmltYXRpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaWRsCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNvcmUvZG9tL1dlYktpdEFuaW1h
dGlvbkV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogICAgIF0gV2Vi
S2l0QW5pbWF0aW9uRXZlbnQgOiBFdmVudCB7CiAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgICAgICAgICAgYW5pbWF0aW9uTmFtZTsKICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRv
dWJsZSAgICAgICAgICAgICBlbGFwc2VkVGltZTsKLSAgICAgdm9pZCAgICAgICAgICAgICAgIGlu
aXRXZWJLaXRBbmltYXRpb25FdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywKKyAgICAgdm9pZCAg
ICAgICAgICAgICAgIGluaXRXZWJLaXRBbmltYXRpb25FdmVudChpbiBbSGludEF0b21pY10gRE9N
U3RyaW5nIHR5cGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBhbmltYXRpb25OYW1lQXJn
LApJbmRleDogV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vTXV0YXRpb25FdmVudC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9k
b20vTXV0YXRpb25FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIGF0dHJOYW1lOwogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgYXR0ckNoYW5nZTsKIAotICAgICAg
ICBbT2xkU3R5bGVPYmpDXSB2b2lkIGluaXRNdXRhdGlvbkV2ZW50KGluIERPTVN0cmluZyB0eXBl
LCAKKyAgICAgICAgW09sZFN0eWxlT2JqQ10gdm9pZCBpbml0TXV0YXRpb25FdmVudChpbiBbSGlu
dEF0b21pY10gRE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuQnViYmxlLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGUsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGUgcmVsYXRl
ZE5vZGUsIApJbmRleDogV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTm9kZS5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9kb20vTm9kZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyB2ZXJzaW9uKTsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3Ry
aW5nVG89TnVsbF0gRE9NU3RyaW5nICAgICAgICBuYW1lc3BhY2VVUkk7Ci0gICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsLCBDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nICAgICAgICBwcmVmaXgKKyAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGwsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBI
aW50QXRvbWljXSBET01TdHJpbmcgICAgICAgIHByZWZpeAogICAgICAgICAgICAgICAgICAgICAg
c2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nICAgICAgICBsb2NhbE5hbWU7CiAK
QEAgLTEwMyw4ICsxMDMsOCBAQAogCiAgICAgICAgIGJvb2xlYW4gICAgICAgICAgICBpc1NhbWVO
b2RlKGluIE5vZGUgb3RoZXIpOwogICAgICAgICBib29sZWFuICAgICAgICAgICAgaXNFcXVhbE5v
ZGUoaW4gTm9kZSBvdGhlcik7Ci0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERP
TVN0cmluZyAgICAgICAgICBsb29rdXBQcmVmaXgoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJKTsKLSAgICAgICAgYm9vbGVhbiAgICAgICAgICAgIGlz
RGVmYXVsdE5hbWVzcGFjZShpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBu
YW1lc3BhY2VVUkkpOworICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJp
bmcgICAgICAgICAgbG9va3VwUHJlZml4KGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgSGlu
dEF0b21pY10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSk7CisgICAgICAgIGJvb2xlYW4gICAgICAg
ICAgICBpc0RlZmF1bHROYW1lc3BhY2UoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBIaW50
QXRvbWljXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJKTsKICAgICAgICAgW0NvbnZlcnROdWxsU3Ry
aW5nVG89TnVsbF0gRE9NU3RyaW5nICAgICAgICAgIGxvb2t1cE5hbWVzcGFjZVVSSShpbiBbQ29u
dmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBwcmVmaXgpOwogCiAgICAgICAgIC8vIERv
Y3VtZW50UG9zaXRpb24KSW5kZXg6IFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCShyZXZpc2lvbiA1MDc1NikK
KysrIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBACiAjZW5kaWYKIAogICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBtYXRj
aCB0aGUgdmVyc2lvbiBpbiB0aGUgRE9NIHNwZWMuCi0gICAgICAgIHZvaWQgaW5pdEtleWJvYXJk
RXZlbnQoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICB2b2lkIGluaXRLZXlib2FyZEV2ZW50
KGluIFtIaW50QXRvbWljXSBET01TdHJpbmcgdHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGUsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gY2FuY2VsYWJsZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRE9NV2luZG93IHZpZXcsIApAQCAtNjMsNyArNjMsNyBAQAogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBrZXlDb2RlOwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBjaGFyQ29kZTsKICAgICAgICAgCi0gICAgICAg
IHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGluIFtIaW50QXRvbWljXSBET01TdHJpbmcgdHlwZSwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGUsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuY2VsYWJsZSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NV2luZG93IHZpZXcsIApJbmRleDogV2ViQ29y
ZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNvcmUv
ZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKICAgICBdIFdlYktpdFRyYW5zaXRpb25FdmVudCA6IEV2ZW50IHsKICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgICBwcm9wZXJ0eU5hbWU7CiAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBkb3VibGUgICAgICAgICAgICAgZWxhcHNlZFRpbWU7Ci0gICAgIHZvaWQg
ICAgICAgICAgICAgICBpbml0V2ViS2l0VHJhbnNpdGlvbkV2ZW50KGluIERPTVN0cmluZyB0eXBl
QXJnLAorICAgICB2b2lkICAgICAgICAgICAgICAgaW5pdFdlYktpdFRyYW5zaXRpb25FdmVudChp
biBbSGludEF0b21pY10gRE9NU3RyaW5nIHR5cGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmlu
ZyBwcm9wZXJ0eU5hbWVBcmcsCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNTA3NTYpCisrKyBXZWJD
b3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogICAg
ICAgICBbT2xkU3R5bGVPYmpDXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKGluIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKQogICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIFtPbGRTdHlsZU9iakNdIE5v
ZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICBbT2xkU3R5bGVPYmpDXSBOb2RlTGlz
dCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgSGlu
dEF0b21pY10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsK
ICAgICAgICAgW09sZFN0eWxlT2JqQ10gQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1l
KTsKSW5kZXg6IFdlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaWRsCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNvcmUv
ZG9tL1Byb2dyZXNzRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAg
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGxlbmd0aENvbXB1dGFi
bGU7CiAgICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgIGxvYWRlZDsK
ICAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgdG90YWw7Ci0gICAg
ICAgICB2b2lkICAgICAgICAgICAgICAgaW5pdFByb2dyZXNzRXZlbnQoaW4gRE9NU3RyaW5nIHR5
cGVBcmcsCisgICAgICAgICB2b2lkICAgICAgICAgICAgICAgaW5pdFByb2dyZXNzRXZlbnQoaW4g
W0hpbnRBdG9taWNdIERPTVN0cmluZyB0eXBlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gICAgICAgY2FuQnViYmxlQXJnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gICAg
ICAgY2FuY2VsYWJsZUFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuICAgICAgIGxlbmd0aENvbXB1dGFibGVBcmcsCkluZGV4OiBXZWJD
b3JlL3BsdWdpbnMvUGx1Z2luQXJyYXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5BcnJheS5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIF0gUGx1
Z2luQXJyYXkgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CiAgICAgICAgIFBsdWdpbiBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgICAg
ICBQbHVnaW4gbmFtZWRJdGVtKGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgUGx1Z2luIG5h
bWVkSXRlbShpbiBbSGludEF0b21pY10gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICB2b2lkIHJl
ZnJlc2goaW4gYm9vbGVhbiByZWxvYWQpOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uaWRsCShy
ZXZpc2lvbiA1MDc1NikKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgZGVzY3JpcHRpb247CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IGxlbmd0aDsKICAgICAgICAgTWltZVR5cGUgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICAgICAgTWltZVR5cGUgbmFtZWRJdGVtKGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAg
TWltZVR5cGUgbmFtZWRJdGVtKGluIFtIaW50QXRvbWljXSBET01TdHJpbmcgbmFtZSk7CiAgICAg
fTsKIAogfQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmlkbAkocmV2aXNpb24gNTA3NTYp
CisrKyBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKICAgICBdIE1pbWVUeXBlQXJyYXkgewogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIE1pbWVUeXBlIGl0ZW0oaW4g
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgICAgIE1pbWVUeXBlIG5hbWVkSXRlbShpbiBET01T
dHJpbmcgbmFtZSk7CisgICAgICAgIE1pbWVUeXBlIG5hbWVkSXRlbShpbiBbSGludEF0b21pY10g
RE9NU3RyaW5nIG5hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDktMTEtMTAg
IEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgW0hpbnRBdG9taWNdIG1ldGFkYXRhIHRvIElE
TCBmaWxlcyB0byBtYXRjaCBBdG9taWNTdHJpbmcgcGFyYW1zIGluIG5hdGl2ZSBBUEkuCisgICAg
ICAgIFRoaXMgcmVtb3ZlcyB1bm5lY2Vzc2FyeSBTdHJpbmctPkF0b21pY1N0cmluZyBjb252ZXJz
aW9ucyBpbiBnZW5lcmF0ZWQgVjggYmluZGluZ3MuCisgICAgICAgIFRvIGVuZm9yY2UgY29ycmVj
dCB1c2FnZSBvZiB0aGlzIG1ldGFkYXRhLCBJIGFkZGVkIGEgbW9kZSB0aGF0IGRpc2FibGVzIGlt
cGxpY2l0CisgICAgICAgIFN0cmluZy0tPkF0b21pY1N0cmluZyBjb252ZXJzaW9ucyB3aGlsZSBj
b21waWxpbmcgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY4CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9E
ZXJpdmVkU291cmNlc0FsbEluT25lLmNwcDogIEVuYWJsZSBOT19JTVBMSUNJVF9BVE9NSUNTVFJJ
TkcuCisgICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuaDogIE1ha2UgQXRvbWlj
U3RyaW5nIGNvbnZlcnNpb25zIGV4cGxpY2l0LgorICAgICAgICAqIGRvbS9CZWZvcmVMb2FkRXZl
bnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1l
bnQuaWRsOgorICAgICAgICAqIGRvbS9FcnJvckV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZl
bnQuaWRsOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
TWVzc2FnZUV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAg
ICogZG9tL011dGF0aW9uRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAg
ICAgKiBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5pZGw6CisgICAgICAgICogZG9tL1Byb2dyZXNz
RXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9V
SUV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsOgorICAg
ICAgICAqIGRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MU3R5bGVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aWRsOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmg6ICBBZGRlZCBOT19J
TVBMSUNJVF9BVE9NSUNTVFJJTkcgb3B0aW9uLgorICAgICAgICAqIHBsdWdpbnMvTWltZVR5cGVB
cnJheS5pZGw6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW4uaWRsOgorICAgICAgICAqIHBsdWdp
bnMvUGx1Z2luQXJyYXkuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbDoK
KyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUZW1wbGF0ZS5oOiAgTWFrZSBBdG9taWNTdHJpbmcgY29udmVyc2lvbnMgZXhwbGlj
aXQuCisgICAgICAgICogc3ZnL1NWR0xhbmdTcGFjZS5pZGw6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuaWRsOgorCiAyMDA5
LTExLTEwICBLZWlzaGkgSGF0dG9yaSAgPGNhc2V5LmhhdHRvcmlAZ21haWwuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
QXRvbWljU3RyaW5nLmgJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCwxNCBAQAogI2luY2x1
ZGUgIkF0b21pY1N0cmluZ0ltcGwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCisv
LyBEZWZpbmUgJ05PX0lNUExJQ0lUX0FUT01JQ1NUUklORycgYmVmb3JlIGluY2x1ZGluZyB0aGlz
IGhlYWRlciwKKy8vIHRvIGRpc2FsbG93IChleHBlbnNpdmUpIGltcGxpY2l0IFN0cmluZy0tPkF0
b21pY1N0cmluZyBjb252ZXJzaW9ucy4KKyNpZmRlZiBOT19JTVBMSUNJVF9BVE9NSUNTVFJJTkcK
KyNkZWZpbmUgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gZXhwbGljaXQKKyNlbHNlCisjZGVmaW5l
IEFUT01JQ1NUUklOR19DT05WRVJTSU9OCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXRvbWljU3RyaW5nSGFzaDsKQEAgLTQwLDkgKzQ4LDkgQEAKICAgICBBdG9taWNT
dHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAgICAg
QXRvbWljU3RyaW5nKGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcykgOiBtX3N0cmluZyhhZGQocykp
IHsgfQogI2VuZGlmCi0gICAgQXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmlu
ZyhhZGQoaW1wKSkgeyB9CisgICAgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5n
KFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhhZGQoaW1wKSkgeyB9CiAgICAgQXRvbWljU3Ry
aW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhpbXApIHsgfQotICAgIEF0b21p
Y1N0cmluZyhjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9Cisg
ICAgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykg
OiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRl
ZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3Ig
ZGVzdHJveWVkLgogICAgIEF0b21pY1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCShyZXZpc2lv
biA1MDc1NikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAvLyBUaGlzIHNvdXJjZSBmaWxl
IGNvYWxlc2NlcyB0aGUgVjggZGVyaXZlZCBzb3VyY2VzIGludG8gYSBzaW5nbGUgb2JqZWN0IGZp
bGUgdG8KIC8vIHJlZHVjZSBibG9hdCBhbmQgYWxsb3cgdXMgdG8gbGluayByZWxlYXNlIGJ1aWxk
cyBvbiAzMi1iaXQgV2luZG93cy4KIAorLy8gUmVxdWlyZSBleHBsaWNpdCBjb252ZXJzaW9uIHRv
IEF0b21pY1N0cmluZy4gVGhpcyBoZWxwcyBjYXRjaCBJREwgcGFyYW1ldGVycworLy8gdGhhdCBh
cmUgbm90IGZsYWdnZWQgd2l0aCBbSGludEF0b21pY10uCisjZGVmaW5lIE5PX0lNUExJQ0lUX0FU
T01JQ1NUUklORworCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhBdHRyLmNwcCIKICNpbmNsdWRlICJi
aW5kaW5ncy9WOEJhckluZm8uY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4QmVmb3JlTG9hZEV2
ZW50LmNwcCIKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJKHJldmlzaW9uIDUwNzU2
KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODEsNyArMTgxLDcgQEAKICAgICAgICAgdHlwZWRlZiBib29sIERlY29yYXRlZFR5cGU7CiAK
ICAgICAgICAgc3RhdGljIGJvb2wgbnVsbCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoYm9vbCB0eXBlKSB7IHJldHVybiB0eXBlID8gInRy
dWUiIDogImZhbHNlIjsgfQorICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRvU3RyaW5nKGJv
b2wgdHlwZSkgeyByZXR1cm4gQXRvbWljU3RyaW5nKHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsg
fQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CkBAIC0xOTAsNyArMTkwLDcgQEAKICAgICAgICAg
dHlwZWRlZiBpbnQgRGVjb3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0aWMgaW50IG51bGwoKSB7
IHJldHVybiAwOyB9Ci0gICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoaW50IHR5
cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9CisgICAgICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0dXJuIEF0b21pY1N0cmluZyhTdHJpbmc6
Om51bWJlcih0eXBlKSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgpAQCAtMTk5LDcgKzE5
OSw3IEBACiAgICAgICAgIHR5cGVkZWYgbG9uZyBEZWNvcmF0ZWRUeXBlOwogCiAgICAgICAgIHN0
YXRpYyBsb25nIG51bGwoKSB7IHJldHVybiAwbDsgfQotICAgICAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIHRvU3RyaW5nKGxvbmcgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0K
KyAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhsb25nIHR5cGUpIHsgcmV0dXJu
IEF0b21pY1N0cmluZyhTdHJpbmc6Om51bWJlcih0eXBlKSk7IH0KICAgICB9OwogCiAgICAgdGVt
cGxhdGU8PgpAQCAtMjA4LDcgKzIwOCw3IEBACiAgICAgICAgIHR5cGVkZWYgU1ZHTGVuZ3RoIERl
Y29yYXRlZFR5cGU7CiAKICAgICAgICAgc3RhdGljIFNWR0xlbmd0aCBudWxsKCkgeyByZXR1cm4g
U1ZHTGVuZ3RoKCk7IH0KLSAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhjb25z
dCBTVkdMZW5ndGgmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9CisgICAg
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTGVuZ3RoJiB0eXBlKSB7
IHJldHVybiBBdG9taWNTdHJpbmcodHlwZS52YWx1ZUFzU3RyaW5nKCkpOyB9CiAgICAgfTsKIAog
ICAgIHRlbXBsYXRlPD4KQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICB0eXBlZGVmIGZsb2F0
IERlY29yYXRlZFR5cGU7CiAKICAgICAgICAgc3RhdGljIGZsb2F0IG51bGwoKSB7IHJldHVybiAw
LjBmOyB9Ci0gICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoZmxvYXQgdHlwZSkg
eyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KKyAgICAgICAgc3RhdGljIEF0b21pY1N0
cmluZyB0b1N0cmluZyhmbG9hdCB0eXBlKSB7IHJldHVybiBBdG9taWNTdHJpbmcoU3RyaW5nOjpu
dW1iZXIodHlwZSkpOyB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KQEAgLTIyNiw3ICsyMjYs
NyBAQAogICAgICAgICB0eXBlZGVmIEZsb2F0UmVjdCBEZWNvcmF0ZWRUeXBlOwogCiAgICAgICAg
IHN0YXRpYyBGbG9hdFJlY3QgbnVsbCgpIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9Ci0gICAgICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoY29uc3QgRmxvYXRSZWN0JiB0eXBlKSB7IHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgiJWYgJWYgJWYgJWYiLCB0eXBlLngoKSwgdHlwZS55KCksIHR5
cGUud2lkdGgoKSwgdHlwZS5oZWlnaHQoKSk7IH0KKyAgICAgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyB0b1N0cmluZyhjb25zdCBGbG9hdFJlY3QmIHR5cGUpIHsgcmV0dXJuIEF0b21pY1N0cmluZyhT
dHJpbmc6OmZvcm1hdCgiJWYgJWYgJWYgJWYiLCB0eXBlLngoKSwgdHlwZS55KCksIHR5cGUud2lk
dGgoKSwgdHlwZS5oZWlnaHQoKSkpOyB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KQEAgLTIz
NSw3ICsyMzUsNyBAQAogICAgICAgICB0eXBlZGVmIFN0cmluZyBEZWNvcmF0ZWRUeXBlOwogCiAg
ICAgICAgIHN0YXRpYyBTdHJpbmcgbnVsbCgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSB7IHJldHVy
biB0eXBlOyB9CisgICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKSB7IHJldHVybiBBdG9taWNTdHJpbmcodHlwZSk7IH0KICAgICB9OwogCiAgICAg
Ly8gQ29tbW9uIHR5cGUgZGVmaW5pdGlvbnMsIHRvIGVhc2UgSURMIGdlbmVyYXRpb24uCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0xhbmdTcGFjZS5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9zdmcvU1ZHTGFu
Z1NwYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogbW9kdWxlIHN2ZyB7
CiAKICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRywgT2JqQ1Byb3RvY29sXSBTVkdMYW5n
U3BhY2UgewotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgY29yZTo6RE9NU3RyaW5nIHhtbGxh
bmcKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtIaW50QXRvbWljXSBjb3JlOjpET01TdHJp
bmcgeG1sbGFuZwogICAgICAgICAgICAgICAgICAgICAgLypzZXR0ZXIgcmFpc2VzKERPTUV4Y2Vw
dGlvbikqLzsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0cmluZyB4bWxz
cGFjZQorICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0hpbnRBdG9taWNdIGNvcmU6OkRPTVN0
cmluZyB4bWxzcGFjZQogICAgICAgICAgICAgICAgICAgICAgLypzZXR0ZXIgcmFpc2VzKERPTUV4
Y2VwdGlvbikqLzsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5pZGwJKHJldmlz
aW9uIDUwNzU2KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTEgKzI4LDExIEBACiAKICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNW
R10gU1ZHU3R5bGVFbGVtZW50IDogU1ZHRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlIHsKLSAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0cmluZyB0eXBlCisgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbSGludEF0b21pY10gY29yZTo6RE9NU3RyaW5nIHR5cGUKICAgICAgICAgICAgICAgICAg
ICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIGNvcmU6OkRPTVN0cmluZyBtZWRpYQorICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0hp
bnRBdG9taWNdIGNvcmU6OkRPTVN0cmluZyBtZWRpYQogICAgICAgICAgICAgICAgICAgICAgc2V0
dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgY29y
ZTo6RE9NU3RyaW5nIHRpdGxlCisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbSGludEF0b21p
Y10gY29yZTo6RE9NU3RyaW5nIHRpdGxlCiAgICAgICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDkgKzM3LDkgQEAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0Fu
aW1hdGVkTGVuZ3RoIHk7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExl
bmd0aCB3aWR0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3Ro
IGhlaWdodDsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGNvcmU6OkRPTVN0cmluZyBjb250
ZW50U2NyaXB0VHlwZQorICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0hpbnRBdG9taWNdIGNv
cmU6OkRPTVN0cmluZyBjb250ZW50U2NyaXB0VHlwZQogICAgICAgICAgICAgICAgICAgICAgLypz
ZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbikqLzsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IGNvcmU6OkRPTVN0cmluZyBjb250ZW50U3R5bGVUeXBlCisgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbSGludEF0b21pY10gY29yZTo6RE9NU3RyaW5nIGNvbnRlbnRTdHlsZVR5cGUKICAgICAg
ICAgICAgICAgICAgICAgIC8qc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pKi87CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW1tdXRhYmxlXSBTVkdSZWN0IHZpZXdwb3J0OwogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWDsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmlkbAkocmV2aXNpb24gNTA3NTYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5
IEBACiBtb2R1bGUgc3ZnIHsKIAogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJlNWR19G
T05UU10gU1ZHQWx0R2x5cGhFbGVtZW50IDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZH
VVJJUmVmZXJlbmNlIHsKLSAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBnbHlwaFJlZgorICAg
ICAgICBhdHRyaWJ1dGUgW0hpbnRBdG9taWNdIERPTVN0cmluZyBnbHlwaFJlZgogICAgICAgICAg
ICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGZvcm1hdAorICAgICAgICBhdHRyaWJ1dGUgW0hpbnRBdG9taWNdIERPTVN0cmluZyBmb3Jt
YXQKICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEs
NyBAQAogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBtaW47
CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBtdWx0
aXBsZTsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIG5hbWU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51
bGxUb051bGxTdHJpbmcsIEhpbnRBdG9taWNdIERPTVN0cmluZyBuYW1lOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyAgICAgICBwYXR0ZXJuOwogICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIHBsYWNlaG9sZGVyOwogICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlYWRPbmx5OwpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBkaXNhYmxlZDsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBhdXRvZm9jdXM7CiAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgbXVsdGlwbGU7Ci0gICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAg
ICAgICBuYW1lOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nLCBIaW50QXRvbWljXSBET01TdHJpbmcgICAgICAgbmFtZTsKICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBzaXplOwogICAgICAgICAKICAgICAgICAgW09s
ZFN0eWxlT2JqQ10gdm9pZCBhZGQoaW4gSFRNTEVsZW1lbnQgZWxlbWVudCwgCkBAIC03MSw3ICs3
MSw3IEBACiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG5vdCBpbiBET00gTGV2ZWwgMiBJ
REwsIGJ1dCBhcmUgbWVudGlvbmVkIGluIHRoZSBzdGFuZGFyZDoKICAgICAgICAgLy8gIlRoZSBj
b250YWluZWQgb3B0aW9ucyBjYW4gYmUgZGlyZWN0bHkgYWNjZXNzZWQgdGhyb3VnaCB0aGUgc2Vs
ZWN0IGVsZW1lbnQgYXMgYSBjb2xsZWN0aW9uLiIKICAgICAgICAgTm9kZSBpdGVtKGluIFtJc0lu
ZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICAgICAgTm9kZSBuYW1lZEl0ZW0oaW4gRE9N
U3RyaW5nIG5hbWUpOworICAgICAgICBOb2RlIG5hbWVkSXRlbShpbiBbSGludEF0b21pY10gRE9N
U3RyaW5nIG5hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50
LmlkbAkocmV2aXNpb24gNTA3NTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBh
Y2Nlc3NLZXk7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAg
ICAgZGlzYWJsZWQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAg
ICAgICAgYXV0b2ZvY3VzOwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgbmFtZTsKKyAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEhpbnRBdG9taWNdIERPTVN0
cmluZyAgICAgICAgICAgIG5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSAgRE9NU3Ry
aW5nICAgICAgICAgICAgdHlwZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIHZhbHVlOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAgICAgIHdpbGxWYWxpZGF0ZTsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysg
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBACiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAg
ICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGxvbmcgICAgICAg
ICAgICAgICAgIG1heExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhE
T01FeGNlcHRpb24pOwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgbmFtZTsKKyAgICAgICAgICAgICAgICAg
YXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEhpbnRBdG9taWNdIERPTVN0cmlu
ZyAgICAgICAgICAgIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICBwbGFjZWhvbGRlcjsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZWFkT25seTsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZXF1aXJlZDsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5pZGwJKHJldmlzaW9uIDUwNzU2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw4IEBACiAgICAgICAgIEltcGxlbWVudGF0aW9uVVVJRD03MzAyNGE1NS1iOGExLTQ2MWItYWQ4
NS1iZWZhNDA4OWY4MGQKICAgICBdIEhUTUxTdHlsZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAg
ICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgZGlzYWJsZWQ7Ci0gICAgICAg
IGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAg
ICBtZWRpYTsKLSAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERP
TVN0cmluZyAgICAgICAgICAgIHR5cGU7CisgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nLCBIaW50QXRvbWljXSBET01TdHJpbmcgICAgICAgICAgICBtZWRpYTsKKyAg
ICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEhpbnRBdG9taWNdIERP
TVN0cmluZyAgICAgICAgICAgIHR5cGU7CiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9DT00pIHx8
ICFMQU5HVUFHRV9DT00KICAgICAgICAgLy8gRE9NIExldmVsIDIgU3R5bGUKSW5kZXg6IFdlYkNv
cmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3
IEBACiAgICAgLy8gdGhlbXNlbHZlcywgb3Iga25vdyB0aGF0IGl0IHdpbGwgZ2V0IGNhbGxlZCBs
YXRlci4KICAgICB2b2lkIHNldE5hbWVJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
eyAgIAotICAgICAgICBtX25hbWUgPSBuYW1lOworICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJp
bmcobmFtZSk7CiAgICAgfQogCiAgICAgQ1NTUnVsZUxpc3QqIGNzc1J1bGVzKCkgeyByZXR1cm4g
bV9sc3RDU1NSdWxlcy5nZXQoKTsgfQo=
</data>
<flag name="review"
          id="24531"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43381</attachid>
            <date>2009-11-17 14:34:59 -0800</date>
            <delta_ts>2009-11-18 10:26:17 -0800</delta_ts>
            <desc>path with different implementation</desc>
            <filename>V8Parameter.patch</filename>
            <type>text/plain</type>
            <size>14063</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTA4NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMTEtMTcgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbGlt
aW5hdGUgdW5uZWNlc3NhcnkgU3RyaW5nLS0+QXRvbWljU3RyaW5nIGNvbnZlcnNpb25zIGZyb20g
Z2VuZXJhdGVkIFY4IGJpbmRpbmdzLAorICAgICAgICBieSBjYXVzaW5nIHRoZSByaWdodCB2OC10
by1XZWJDb3JlIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZvciBldmVyeSBwYXJh
bWV0ZXIuCisgICAgICAgIFRoaXMgbm8gbG9uZ2VyIHJlcXVpcmVzIGFueSBJREwgbWV0YWRhdGEs
IHNvIEkndmUgcmVtb3ZlZCB0aGUgW0hpbnRBdG9taWNdIGFubm90YXRpb25zLgorICAgICAgICBU
byBlbmZvcmNlIGNvcnJlY3RuZXNzLCBJIGFkZGVkIGEgbW9kZSB0aGF0IGRpc2FibGVzIGltcGxp
Y2l0CisgICAgICAgIFN0cmluZy0tPkF0b21pY1N0cmluZyBjb252ZXJzaW9ucyB3aGlsZSBjb21w
aWxpbmcgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY4CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbTogIEdlbmVyYXRlIHVzYWdlIG9mIFY4UGFyYW1ldGVyIGNsYXNz
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwOiAgRW5h
YmxlIE5PX0lNUExJQ0lUX0FUT01JQ1NUUklORy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDogIEFkZCBWOFBhcmFtZXRlciBjbGFzcy4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5oOiAgTWFrZSBBdG9taWNTdHJpbmcgY29udmVyc2lvbnMgZXhwbGljaXQu
CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogIFJlbW92ZSBvYnNvbGV0ZSBbSGludEF0b21p
Y10gYW5ub3RhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5oOiAg
QWRkZWQgTk9fSU1QTElDSVRfQVRPTUlDU1RSSU5HIG9wdGlvbi4KKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUZW1wbGF0ZS5oOiAgTWFrZSBBdG9taWNTdHJpbmcgY29udmVyc2lvbnMgZXhwbGlj
aXQuCisKIDIwMDktMTEtMTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA1MTA2MikKKysr
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiAgICAg
bXkgJGF0dHJUeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
KTsKICAgICBteSAkYXR0cklzUG9kVHlwZSA9IElzUG9kVHlwZSgkYXR0clR5cGUpOwogCi0gICAg
bXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUsIDApOworICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21TaWdu
YXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAtMSk7CiAgICAgbXkgJGlzUG9kVHlwZSA9IElz
UG9kVHlwZSgkaW1wbENsYXNzTmFtZSk7CiAgICAgbXkgJHNraXBDb250ZXh0ID0gMDsKIApAQCAt
OTQ3LDcgKzk0Nyw3IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBib29sICR7cGFyYW1ldGVyTmFtZX1PaztcbiIpOwogICAgICAgICB9CiAKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1
cmUoJHBhcmFtZXRlciwgMSkgLiAiICRwYXJhbWV0ZXJOYW1lID0gIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRw
YXJhbWV0ZXIsICRwYXJhbUluZGV4KSAuICIgJHBhcmFtZXRlck5hbWUgPSAiKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdz
WyRwYXJhbUluZGV4XSIsCiAgICAgICAgICAgIEJhc2ljVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRw
YXJhbWV0ZXIpID8gICIke3BhcmFtZXRlck5hbWV9T2siIDogdW5kZWYpIC4gIjtcbiIpOwogCkBA
IC0xNzE4LDE5ICsxNzE4LDE0IEBAIHN1YiBHZXRUeXBlRnJvbVNpZ25hdHVyZQogewogICAgIG15
ICRzaWduYXR1cmUgPSBzaGlmdDsKIAotICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0
cmlwTW9kdWxlKCRzaWduYXR1cmUtPnR5cGUpOwotICAgIGlmICgoJHR5cGUgZXEgIkRPTVN0cmlu
ZyIpICYmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGludEF0b21pYyJ9IHx8
ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In0pKSB7Ci0gICAgICAg
ICR0eXBlID0gIkF0b21pY1N0cmluZyI7Ci0gICAgfQotCi0gICAgcmV0dXJuICR0eXBlOworICAg
IHJldHVybiAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJHNpZ25hdHVyZS0+dHlwZSk7CiB9
CiAKIAogc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCiB7CiAgICAgbXkgJHNpZ25hdHVy
ZSA9IHNoaWZ0OwotICAgIG15ICRpc1BhcmFtZXRlciA9IHNoaWZ0OworICAgIG15ICRwYXJhbWV0
ZXJJbmRleCA9IHNoaWZ0OwogCiAgICAgbXkgJHR5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgk
c2lnbmF0dXJlKTsKIApAQCAtMTczOSw3ICsxNzM0LDE5IEBAIHN1YiBHZXROYXRpdmVUeXBlRnJv
bVNpZ25hdHVyZQogICAgICAgICByZXR1cm4gImludCI7CiAgICAgfQogCi0gICAgcmV0dXJuIEdl
dE5hdGl2ZVR5cGUoJHR5cGUsICRpc1BhcmFtZXRlcik7CisgICAgJHR5cGUgPSBHZXROYXRpdmVU
eXBlKCR0eXBlLCAkcGFyYW1ldGVySW5kZXggPj0gMCA/IDEgOiAwKTsKKyAgICAKKyAgICBpZiAo
JHBhcmFtZXRlckluZGV4ID49IDAgJiYgJHR5cGUgZXEgIlY4UGFyYW1ldGVyIikgeworICAgICAg
ICBteSAkbW9kZSA9ICIiOworICAgICAgICBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmcifSkgeworICAgICAgICAg
ICAgJG1vZGUgPSAiV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrIjsKKyAgICAgICAgfSBlbHNpZiAo
JHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnROdWxsVG9OdWxsU3RyaW5n
In0pIHsKKyAgICAgICAgICAgICRtb2RlID0gIldpdGhOdWxsQ2hlY2siOworICAgICAgICB9Cisg
ICAgICAgICR0eXBlIC49ICI8JG1vZGU+IjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuICR0eXBl
OwogfQogCiBzdWIgSXNSZWZQdHJUeXBlCkBAIC0xODU3LDEwICsxODY0LDExIEBAIHN1YiBHZXRO
YXRpdmVUeXBlCiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKICAgICBteSAkaXNQYXJhbWV0ZXIgPSBz
aGlmdDsKIAotICAgIGlmICgkdHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJBdG9taWNTdHJp
bmciIG9yICR0eXBlIGVxICJkb3VibGUiKSB7CisgICAgaWYgKCR0eXBlIGVxICJmbG9hdCIgb3Ig
JHR5cGUgZXEgImRvdWJsZSIpIHsKICAgICAgICAgcmV0dXJuICR0eXBlOwogICAgIH0KIAorICAg
IHJldHVybiAiVjhQYXJhbWV0ZXIiIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlwZSBl
cSAiRE9NVXNlckRhdGEiKSBhbmQgJGlzUGFyYW1ldGVyOwogICAgIHJldHVybiAiaW50IiBpZiAk
dHlwZSBlcSAiaW50IjsKICAgICByZXR1cm4gImludCIgaWYgJHR5cGUgZXEgInNob3J0IiBvciAk
dHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOwogICAgIHJldHVybiAidW5zaWduZWQiIGlmICR0eXBl
IGVxICJ1bnNpZ25lZCBsb25nIjsKQEAgLTE4OTYsNyArMTkwNCw2IEBAIHN1YiBHZXROYXRpdmVU
eXBlCiAKIAogbXkgJXR5cGVDYW5GYWlsQ29udmVyc2lvbiA9ICgKLSAgICAiQXRvbWljU3RyaW5n
IiA9PiAwLAogICAgICJBdHRyIiA9PiAxLAogICAgICJXZWJHTEFycmF5IiA9PiAwLAogICAgICJX
ZWJHTEJ1ZmZlciIgPT4gMCwKQEAgLTIwMTEsMjEgKzIwMTgsOCBAQCBzdWIgSlNWYWx1ZVRvTmF0
aXZlCiAgICAgcmV0dXJuICJzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFyZUhvdz4oJHZhbHVlLT5J
bnQzMlZhbHVlKCkpIiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7CiAgICAgcmV0dXJuICJzdGF0
aWNfY2FzdDxTVkdQYWludDo6U1ZHUGFpbnRUeXBlPigkdmFsdWUtPlRvSW50MzIoKS0+SW50MzJW
YWx1ZSgpKSIgaWYgJHR5cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKLSAgICBpZiAoJHR5cGUgZXEg
IkF0b21pY1N0cmluZyIpIHsKLSAgICAgICAgcmV0dXJuICJ0b0F0b21pY1dlYkNvcmVTdHJpbmdX
aXRoTnVsbENoZWNrKCR2YWx1ZSkiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb252ZXJ0TnVsbFRvTnVsbFN0cmluZyJ9OwotICAgICAgICByZXR1cm4gInY4VmFsdWVUb0F0
b21pY1dlYkNvcmVTdHJpbmcoJHZhbHVlKSI7Ci0gICAgfQotCi0gICAgaWYgKCR0eXBlIGVxICJE
T01Vc2VyRGF0YSIpIHsKLSAgICAgICAgcmV0dXJuICJ0b1dlYkNvcmVTdHJpbmcoYXJncywgJDEp
IiBpZiAkdmFsdWUgPX4gL2FyZ3NcWyhcZCspXS87Ci0gICAgICAgIHJldHVybiAidG9XZWJDb3Jl
U3RyaW5nKCR2YWx1ZSkiOwotICAgIH0KLSAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIpIHsK
LSAgICAgICAgcmV0dXJuICJ0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKCR2YWx1ZSkiIGlm
ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
ZyJ9OwotICAgICAgICByZXR1cm4gInRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRD
aGVjaygkdmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVy
dFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZyJ9OwotICAgICAgICAKLSAgICAgICAgcmV0dXJu
ICJ0b1dlYkNvcmVTdHJpbmcoYXJncywgJDEpIiBpZiAkdmFsdWUgPX4gL2FyZ3NcWyhcZCspXS87
Ci0gICAgICAgIHJldHVybiAidG9XZWJDb3JlU3RyaW5nKCR2YWx1ZSkiOworICAgIGlmICgkdHlw
ZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlwZSBlcSAiRE9NVXNlckRhdGEiKSB7CisgICAgICAgIHJl
dHVybiAkdmFsdWU7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUiKSB7CkBAIC0yMTQ5LDcgKzIxNDMsNiBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWduYXR1
cmUKIAogbXkgJW5vbl93cmFwcGVyX3R5cGVzID0gKAogICAgICdmbG9hdCcgPT4gMSwKLSAgICAn
QXRvbWljU3RyaW5nJyA9PiAxLAogICAgICdkb3VibGUnID0+IDEsCiAgICAgJ3Nob3J0JyA9PiAx
LAogICAgICd1bnNpZ25lZCBzaG9ydCcgPT4gMSwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
RGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAkocmV2aXNpb24gNTEwNjIpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSwxMCBAQAogLy8gVGhpcyBzb3VyY2UgZmlsZSBjb2FsZXNjZXMgdGhlIFY4
IGRlcml2ZWQgc291cmNlcyBpbnRvIGEgc2luZ2xlIG9iamVjdCBmaWxlIHRvCiAvLyByZWR1Y2Ug
YmxvYXQgYW5kIGFsbG93IHVzIHRvIGxpbmsgcmVsZWFzZSBidWlsZHMgb24gMzItYml0IFdpbmRv
d3MuCiAKKy8vIFJlcXVpcmUgZXhwbGljaXQgY29udmVyc2lvbiB0byBBdG9taWNTdHJpbmcuIFRo
aXMgaGVscHMgY2F0Y2ggY2FzZXMgd2hlcmUKKy8vIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgY2F1
c2UgYW4gZXhwZW5zaXZlIGltcGxpY2l0IGNvbnZlcnNpb24uCisjZGVmaW5lIE5PX0lNUExJQ0lU
X0FUT01JQ1NUUklORworCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhBdHRyLmNwcCIKICNpbmNsdWRl
ICJiaW5kaW5ncy9WOEJhckluZm8uY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4QmVmb3JlTG9h
ZEV2ZW50LmNwcCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAkocmV2aXNpb24gNTEwNjIp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjksNiArMjI5LDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBnZXRFbGVtZW50RXZlbnRIYW5kbGVyQXR0cihjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgCisgICAgLy8gVjhQYXJhbWV0ZXIgaXMgYW4gYWRh
cHRlciBjbGFzcyB0aGF0IGNvbnZlcnRzIFY4IHZhbHVlcyB0byBTdHJpbmdzCisgICAgLy8gb3Ig
QXRvbWljU3RyaW5ncyBhcyBhcHByb3ByaWF0ZSwgdXNpbmcgbXVsdGlwbGUgdHlwZWNhc3Qgb3Bl
cmF0b3JzLgorICAgIGVudW0gVjhQYXJhbWV0ZXJNb2RlIHsKKyAgICAgICAgRGVmYXVsdE1vZGUs
CisgICAgICAgIFdpdGhOdWxsQ2hlY2ssCisgICAgICAgIFdpdGhVbmRlZmluZWRPck51bGxDaGVj
aworICAgIH07CisgICAgdGVtcGxhdGUgPFY4UGFyYW1ldGVyTW9kZSBNT0RFID0gRGVmYXVsdE1v
ZGU+CisgICAgY2xhc3MgVjhQYXJhbWV0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgVjhQYXJh
bWV0ZXIgKHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCkgOl92OE9iamVjdChvYmplY3QpIHsg
fQorICAgICAgICBvcGVyYXRvciBTdHJpbmcoKTsKKyAgICAgICAgb3BlcmF0b3IgQXRvbWljU3Ry
aW5nKCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gX3Y4T2Jq
ZWN0OworICAgIH07CisgICAgCisgICAgdGVtcGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0ZXI8RGVm
YXVsdE1vZGU+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNvcmVTdHJpbmcoX3Y4
T2JqZWN0KTsgfQorICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFyYW1ldGVyPFdpdGhOdWxsQ2hl
Y2s+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENo
ZWNrKF92OE9iamVjdCk7IH0KKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRo
VW5kZWZpbmVkT3JOdWxsQ2hlY2s+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNv
cmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soX3Y4T2JqZWN0KTsgfQorCisgICAgdGVt
cGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0ZXI8RGVmYXVsdE1vZGU+OjpvcGVyYXRvciBBdG9taWNT
dHJpbmcoKSB7IHJldHVybiB2OFZhbHVlVG9BdG9taWNXZWJDb3JlU3RyaW5nKF92OE9iamVjdCk7
IH0KKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRoTnVsbENoZWNrPjo6b3Bl
cmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1cm4gdG9BdG9taWNXZWJDb3JlU3RyaW5nV2l0aE51
bGxDaGVjayhfdjhPYmplY3QpOyB9CisgICAgdGVtcGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0ZXI8
V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPjo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1
cm4gdG9BdG9taWNXZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhfdjhPYmplY3QpOyB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1
bGUuaAkocmV2aXNpb24gNTEwNjIpCisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNS
dWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIC8vIHRo
ZW1zZWx2ZXMsIG9yIGtub3cgdGhhdCBpdCB3aWxsIGdldCBjYWxsZWQgbGF0ZXIuCiAgICAgdm9p
ZCBzZXROYW1lSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsgICAKLSAgICAgICAg
bV9uYW1lID0gbmFtZTsKKyAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKG5hbWUpOwogICAg
IH0KIAogICAgIENTU1J1bGVMaXN0KiBjc3NSdWxlcygpIHsgcmV0dXJuIG1fbHN0Q1NTUnVsZXMu
Z2V0KCk7IH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDUxMDYyKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG1vZHVsZSBjb3Jl
IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEN1c3RvbV0gRE9NSW1wbGVtZW50YXRp
b24gaW1wbGVtZW50YXRpb247CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGRv
Y3VtZW50RWxlbWVudDsKIAotICAgICAgICBbUmV0dXJuc05ld10gRWxlbWVudCBjcmVhdGVFbGVt
ZW50KGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgSGludEF0b21pY10gRE9NU3RyaW5nIHRh
Z05hbWUpCisgICAgICAgIFtSZXR1cm5zTmV3XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW4gW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGFnTmFtZSkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCAgIGNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgW1JldHVybnNOZXddIFRleHQgY3JlYXRlVGV4dE5v
ZGUoaW4gRE9NU3RyaW5nIGRhdGEpOwpAQCAtNjQsNyArNjQsNyBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNd
IE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAg
ICAgICBFbGVtZW50ICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQoaW4gW0hpbnRBdG9taWNdIERP
TVN0cmluZyBlbGVtZW50SWQpOworICAgICAgICBFbGVtZW50ICAgICAgICAgICAgZ2V0RWxlbWVu
dEJ5SWQoaW4gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDMg
Q29yZQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5oCShyZXZpc2lvbiA1
MTA2MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNiArMjQsMTQgQEAKICNpbmNsdWRlICJBdG9taWNTdHJpbmdJbXBsLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAorLy8gRGVmaW5lICdOT19JTVBMSUNJVF9BVE9N
SUNTVFJJTkcnIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBoZWFkZXIsCisvLyB0byBkaXNhbGxvdyAo
ZXhwZW5zaXZlKSBpbXBsaWNpdCBTdHJpbmctLT5BdG9taWNTdHJpbmcgY29udmVyc2lvbnMuCisj
aWZkZWYgTk9fSU1QTElDSVRfQVRPTUlDU1RSSU5HCisjZGVmaW5lIEFUT01JQ1NUUklOR19DT05W
RVJTSU9OIGV4cGxpY2l0CisjZWxzZQorI2RlZmluZSBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEF0b21pY1N0cmluZ0hhc2g7
CkBAIC00MCw5ICs0OCw5IEBAIHB1YmxpYzoKICAgICBBdG9taWNTdHJpbmcoY29uc3QgSlNDOjpV
U3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogI2VuZGlmCi0gICAg
QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhhZGQoaW1wKSkgeyB9Cisg
ICAgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkg
OiBtX3N0cmluZyhhZGQoaW1wKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0lt
cGwqIGltcCkgOiBtX3N0cmluZyhpbXApIHsgfQotICAgIEF0b21pY1N0cmluZyhjb25zdCBTdHJp
bmcmIHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CisgICAgQVRPTUlDU1RSSU5HX0NP
TlZFUlNJT04gQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5p
bXBsKCkpKSB7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFy
ZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAgIEF0
b21pY1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUZW1wbGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxh
dGUuaAkocmV2aXNpb24gNTEwNjIpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHR5cGVkZWYgYm9vbCBEZWNvcmF0ZWRUeXBlOwogCiAgICAgICAgIHN0YXRpYyBi
b29sIG51bGwoKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IHRvU3RyaW5nKGJvb2wgdHlwZSkgeyByZXR1cm4gdHlwZSA/ICJ0cnVlIiA6ICJmYWxzZSI7IH0K
KyAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhib29sIHR5cGUpIHsgcmV0dXJu
IEF0b21pY1N0cmluZyh0eXBlID8gInRydWUiIDogImZhbHNlIik7IH0KICAgICB9OwogCiAgICAg
dGVtcGxhdGU8PgpAQCAtMTkwLDcgKzE5MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdHlwZWRlZiBpbnQgRGVjb3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0aWMgaW50IG51bGwo
KSB7IHJldHVybiAwOyB9Ci0gICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoaW50
IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9CisgICAgICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0dXJuIEF0b21pY1N0cmluZyhTdHJp
bmc6Om51bWJlcih0eXBlKSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgpAQCAtMTk5LDcg
KzE5OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBsb25nIERlY29y
YXRlZFR5cGU7CiAKICAgICAgICAgc3RhdGljIGxvbmcgbnVsbCgpIHsgcmV0dXJuIDBsOyB9Ci0g
ICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcobG9uZyB0eXBlKSB7IHJldHVybiBT
dHJpbmc6Om51bWJlcih0eXBlKTsgfQorICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRvU3Ry
aW5nKGxvbmcgdHlwZSkgeyByZXR1cm4gQXRvbWljU3RyaW5nKFN0cmluZzo6bnVtYmVyKHR5cGUp
KTsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CkBAIC0yMDgsNyArMjA4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB0eXBlZGVmIFNWR0xlbmd0aCBEZWNvcmF0ZWRUeXBlOwog
CiAgICAgICAgIHN0YXRpYyBTVkdMZW5ndGggbnVsbCgpIHsgcmV0dXJuIFNWR0xlbmd0aCgpOyB9
Ci0gICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTGVuZ3RoJiB0
eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorICAgICAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aCYgdHlwZSkgeyByZXR1cm4gQXRvbWlj
U3RyaW5nKHR5cGUudmFsdWVBc1N0cmluZygpKTsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+
CkBAIC0yMTcsNyArMjE3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0eXBlZGVm
IGZsb2F0IERlY29yYXRlZFR5cGU7CiAKICAgICAgICAgc3RhdGljIGZsb2F0IG51bGwoKSB7IHJl
dHVybiAwLjBmOyB9Ci0gICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoZmxvYXQg
dHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KKyAgICAgICAgc3RhdGljIEF0
b21pY1N0cmluZyB0b1N0cmluZyhmbG9hdCB0eXBlKSB7IHJldHVybiBBdG9taWNTdHJpbmcoU3Ry
aW5nOjpudW1iZXIodHlwZSkpOyB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KQEAgLTIyNiw3
ICsyMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgRmxvYXRSZWN0
IERlY29yYXRlZFR5cGU7CiAKICAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBudWxsKCkgeyByZXR1
cm4gRmxvYXRSZWN0KCk7IH0KLSAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhj
b25zdCBGbG9hdFJlY3QmIHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlZiAlZiAlZiAl
ZiIsIHR5cGUueCgpLCB0eXBlLnkoKSwgdHlwZS53aWR0aCgpLCB0eXBlLmhlaWdodCgpKTsgfQor
ICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRvU3RyaW5nKGNvbnN0IEZsb2F0UmVjdCYgdHlw
ZSkgeyByZXR1cm4gQXRvbWljU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCIlZiAlZiAlZiAlZiIsIHR5
cGUueCgpLCB0eXBlLnkoKSwgdHlwZS53aWR0aCgpLCB0eXBlLmhlaWdodCgpKSk7IH0KICAgICB9
OwogCiAgICAgdGVtcGxhdGU8PgpAQCAtMjM1LDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdHlwZWRlZiBTdHJpbmcgRGVjb3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0
aWMgU3RyaW5nIG51bGwoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgICAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZTsgfQor
ICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkg
eyByZXR1cm4gQXRvbWljU3RyaW5nKHR5cGUpOyB9CiAgICAgfTsKIAogICAgIC8vIENvbW1vbiB0
eXBlIGRlZmluaXRpb25zLCB0byBlYXNlIElETCBnZW5lcmF0aW9uLgo=
</data>
<flag name="review"
          id="25085"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43441</attachid>
            <date>2009-11-18 10:26:17 -0800</date>
            <delta_ts>2009-11-18 12:10:21 -0800</delta_ts>
            <desc>patch with updated SVG headers</desc>
            <filename>V8Parameter.patch</filename>
            <type>text/plain</type>
            <size>15592</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTA4NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMTEtMTcgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbGlt
aW5hdGUgdW5uZWNlc3NhcnkgU3RyaW5nLS0+QXRvbWljU3RyaW5nIGNvbnZlcnNpb25zIGZyb20g
Z2VuZXJhdGVkIFY4IGJpbmRpbmdzLAorICAgICAgICBieSBjYXVzaW5nIHRoZSByaWdodCB2OC10
by1XZWJDb3JlIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZvciBldmVyeSBwYXJh
bWV0ZXIuCisgICAgICAgIFRoaXMgbm8gbG9uZ2VyIHJlcXVpcmVzIGFueSBJREwgbWV0YWRhdGEs
IHNvIEkndmUgcmVtb3ZlZCB0aGUgW0hpbnRBdG9taWNdIGFubm90YXRpb25zLgorICAgICAgICBU
byBlbmZvcmNlIGNvcnJlY3RuZXNzLCBJIGFkZGVkIGEgbW9kZSB0aGF0IGRpc2FibGVzIGltcGxp
Y2l0CisgICAgICAgIFN0cmluZy0tPkF0b21pY1N0cmluZyBjb252ZXJzaW9ucyB3aGlsZSBjb21w
aWxpbmcgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY4CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbTogIEdlbmVyYXRlIHVzYWdlIG9mIFY4UGFyYW1ldGVyIGNsYXNz
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwOiAgRW5h
YmxlIE5PX0lNUExJQ0lUX0FUT01JQ1NUUklORy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDogIEFkZCBWOFBhcmFtZXRlciBjbGFzcy4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5oOiAgTWFrZSBBdG9taWNTdHJpbmcgY29udmVyc2lvbnMgZXhwbGljaXQu
CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogIFJlbW92ZSBvYnNvbGV0ZSBbSGludEF0b21p
Y10gYW5ub3RhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5oOiAg
QWRkZWQgTk9fSU1QTElDSVRfQVRPTUlDU1RSSU5HIG9wdGlvbi4KKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUZW1wbGF0ZS5oOiAgQ2hhbmdlIHNvbWUgcmV0dXJuIHR5cGVzIHRvIFN0cmluZyB0
byBhdm9pZCBpbXBsaWNpdCBjb252ZXJzaW9uLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFBy
b3BlcnR5Lmg6IEFkYXB0IHRvIGNoYW5nZWQgcmV0dXJuIHR5cGVzIGluIFNWR0FuaW1hdGVkVGVt
cGxhdGUuCisKIDIwMDktMTEtMTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA1MTA2MikK
KysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiAg
ICAgbXkgJGF0dHJUeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKTsKICAgICBteSAkYXR0cklzUG9kVHlwZSA9IElzUG9kVHlwZSgkYXR0clR5cGUpOwogCi0g
ICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsIDApOworICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21T
aWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAtMSk7CiAgICAgbXkgJGlzUG9kVHlwZSA9
IElzUG9kVHlwZSgkaW1wbENsYXNzTmFtZSk7CiAgICAgbXkgJHNraXBDb250ZXh0ID0gMDsKIApA
QCAtOTQ3LDcgKzk0Nyw3IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICBib29sICR7cGFyYW1ldGVyTmFtZX1PaztcbiIpOwogICAgICAgICB9CiAKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWdu
YXR1cmUoJHBhcmFtZXRlciwgMSkgLiAiICRwYXJhbWV0ZXJOYW1lID0gIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJl
KCRwYXJhbWV0ZXIsICRwYXJhbUluZGV4KSAuICIgJHBhcmFtZXRlck5hbWUgPSAiKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJh
cmdzWyRwYXJhbUluZGV4XSIsCiAgICAgICAgICAgIEJhc2ljVHlwZUNhbkZhaWxDb252ZXJzaW9u
KCRwYXJhbWV0ZXIpID8gICIke3BhcmFtZXRlck5hbWV9T2siIDogdW5kZWYpIC4gIjtcbiIpOwog
CkBAIC0xNzE4LDE5ICsxNzE4LDE0IEBAIHN1YiBHZXRUeXBlRnJvbVNpZ25hdHVyZQogewogICAg
IG15ICRzaWduYXR1cmUgPSBzaGlmdDsKIAotICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3It
PlN0cmlwTW9kdWxlKCRzaWduYXR1cmUtPnR5cGUpOwotICAgIGlmICgoJHR5cGUgZXEgIkRPTVN0
cmluZyIpICYmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGludEF0b21pYyJ9
IHx8ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In0pKSB7Ci0gICAg
ICAgICR0eXBlID0gIkF0b21pY1N0cmluZyI7Ci0gICAgfQotCi0gICAgcmV0dXJuICR0eXBlOwor
ICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJHNpZ25hdHVyZS0+dHlwZSk7
CiB9CiAKIAogc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCiB7CiAgICAgbXkgJHNpZ25h
dHVyZSA9IHNoaWZ0OwotICAgIG15ICRpc1BhcmFtZXRlciA9IHNoaWZ0OworICAgIG15ICRwYXJh
bWV0ZXJJbmRleCA9IHNoaWZ0OwogCiAgICAgbXkgJHR5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVy
ZSgkc2lnbmF0dXJlKTsKIApAQCAtMTczOSw3ICsxNzM0LDE5IEBAIHN1YiBHZXROYXRpdmVUeXBl
RnJvbVNpZ25hdHVyZQogICAgICAgICByZXR1cm4gImludCI7CiAgICAgfQogCi0gICAgcmV0dXJu
IEdldE5hdGl2ZVR5cGUoJHR5cGUsICRpc1BhcmFtZXRlcik7CisgICAgJHR5cGUgPSBHZXROYXRp
dmVUeXBlKCR0eXBlLCAkcGFyYW1ldGVySW5kZXggPj0gMCA/IDEgOiAwKTsKKyAgICAKKyAgICBp
ZiAoJHBhcmFtZXRlckluZGV4ID49IDAgJiYgJHR5cGUgZXEgIlY4UGFyYW1ldGVyIikgeworICAg
ICAgICBteSAkbW9kZSA9ICIiOworICAgICAgICBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmcifSkgeworICAgICAg
ICAgICAgJG1vZGUgPSAiV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrIjsKKyAgICAgICAgfSBlbHNp
ZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nIn0pIHsKKyAgICAgICAgICAgICRtb2RlID0gIldpdGhOdWxsQ2hlY2siOworICAgICAgICB9
CisgICAgICAgICR0eXBlIC49ICI8JG1vZGU+IjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuICR0
eXBlOwogfQogCiBzdWIgSXNSZWZQdHJUeXBlCkBAIC0xODU3LDEwICsxODY0LDExIEBAIHN1YiBH
ZXROYXRpdmVUeXBlCiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKICAgICBteSAkaXNQYXJhbWV0ZXIg
PSBzaGlmdDsKIAotICAgIGlmICgkdHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJBdG9taWNT
dHJpbmciIG9yICR0eXBlIGVxICJkb3VibGUiKSB7CisgICAgaWYgKCR0eXBlIGVxICJmbG9hdCIg
b3IgJHR5cGUgZXEgImRvdWJsZSIpIHsKICAgICAgICAgcmV0dXJuICR0eXBlOwogICAgIH0KIAor
ICAgIHJldHVybiAiVjhQYXJhbWV0ZXIiIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlw
ZSBlcSAiRE9NVXNlckRhdGEiKSBhbmQgJGlzUGFyYW1ldGVyOwogICAgIHJldHVybiAiaW50IiBp
ZiAkdHlwZSBlcSAiaW50IjsKICAgICByZXR1cm4gImludCIgaWYgJHR5cGUgZXEgInNob3J0IiBv
ciAkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOwogICAgIHJldHVybiAidW5zaWduZWQiIGlmICR0
eXBlIGVxICJ1bnNpZ25lZCBsb25nIjsKQEAgLTE4OTYsNyArMTkwNCw2IEBAIHN1YiBHZXROYXRp
dmVUeXBlCiAKIAogbXkgJXR5cGVDYW5GYWlsQ29udmVyc2lvbiA9ICgKLSAgICAiQXRvbWljU3Ry
aW5nIiA9PiAwLAogICAgICJBdHRyIiA9PiAxLAogICAgICJXZWJHTEFycmF5IiA9PiAwLAogICAg
ICJXZWJHTEJ1ZmZlciIgPT4gMCwKQEAgLTIwMTEsMjEgKzIwMTgsOCBAQCBzdWIgSlNWYWx1ZVRv
TmF0aXZlCiAgICAgcmV0dXJuICJzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFyZUhvdz4oJHZhbHVl
LT5JbnQzMlZhbHVlKCkpIiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7CiAgICAgcmV0dXJuICJz
dGF0aWNfY2FzdDxTVkdQYWludDo6U1ZHUGFpbnRUeXBlPigkdmFsdWUtPlRvSW50MzIoKS0+SW50
MzJWYWx1ZSgpKSIgaWYgJHR5cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKLSAgICBpZiAoJHR5cGUg
ZXEgIkF0b21pY1N0cmluZyIpIHsKLSAgICAgICAgcmV0dXJuICJ0b0F0b21pY1dlYkNvcmVTdHJp
bmdXaXRoTnVsbENoZWNrKCR2YWx1ZSkiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDb252ZXJ0TnVsbFRvTnVsbFN0cmluZyJ9OwotICAgICAgICByZXR1cm4gInY4VmFsdWVU
b0F0b21pY1dlYkNvcmVTdHJpbmcoJHZhbHVlKSI7Ci0gICAgfQotCi0gICAgaWYgKCR0eXBlIGVx
ICJET01Vc2VyRGF0YSIpIHsKLSAgICAgICAgcmV0dXJuICJ0b1dlYkNvcmVTdHJpbmcoYXJncywg
JDEpIiBpZiAkdmFsdWUgPX4gL2FyZ3NcWyhcZCspXS87Ci0gICAgICAgIHJldHVybiAidG9XZWJD
b3JlU3RyaW5nKCR2YWx1ZSkiOwotICAgIH0KLSAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIp
IHsKLSAgICAgICAgcmV0dXJuICJ0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKCR2YWx1ZSki
IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZyJ9OwotICAgICAgICByZXR1cm4gInRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmlu
ZWRDaGVjaygkdmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
dmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZyJ9OwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuICJ0b1dlYkNvcmVTdHJpbmcoYXJncywgJDEpIiBpZiAkdmFsdWUgPX4gL2FyZ3NcWyhcZCsp
XS87Ci0gICAgICAgIHJldHVybiAidG9XZWJDb3JlU3RyaW5nKCR2YWx1ZSkiOworICAgIGlmICgk
dHlwZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlwZSBlcSAiRE9NVXNlckRhdGEiKSB7CisgICAgICAg
IHJldHVybiAkdmFsdWU7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKSB7CkBAIC0yMTQ5LDcgKzIxNDMsNiBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWdu
YXR1cmUKIAogbXkgJW5vbl93cmFwcGVyX3R5cGVzID0gKAogICAgICdmbG9hdCcgPT4gMSwKLSAg
ICAnQXRvbWljU3RyaW5nJyA9PiAxLAogICAgICdkb3VibGUnID0+IDEsCiAgICAgJ3Nob3J0JyA9
PiAxLAogICAgICd1bnNpZ25lZCBzaG9ydCcgPT4gMSwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAkocmV2aXNpb24gNTEwNjIpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSwxMCBAQAogLy8gVGhpcyBzb3VyY2UgZmlsZSBjb2FsZXNjZXMgdGhl
IFY4IGRlcml2ZWQgc291cmNlcyBpbnRvIGEgc2luZ2xlIG9iamVjdCBmaWxlIHRvCiAvLyByZWR1
Y2UgYmxvYXQgYW5kIGFsbG93IHVzIHRvIGxpbmsgcmVsZWFzZSBidWlsZHMgb24gMzItYml0IFdp
bmRvd3MuCiAKKy8vIFJlcXVpcmUgZXhwbGljaXQgY29udmVyc2lvbiB0byBBdG9taWNTdHJpbmcu
IFRoaXMgaGVscHMgY2F0Y2ggY2FzZXMgd2hlcmUKKy8vIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3Mg
Y2F1c2UgYW4gZXhwZW5zaXZlIGltcGxpY2l0IGNvbnZlcnNpb24uCisjZGVmaW5lIE5PX0lNUExJ
Q0lUX0FUT01JQ1NUUklORworCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhBdHRyLmNwcCIKICNpbmNs
dWRlICJiaW5kaW5ncy9WOEJhckluZm8uY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4QmVmb3Jl
TG9hZEV2ZW50LmNwcCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAkocmV2aXNpb24gNTEw
NjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjksNiArMjI5LDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBnZXRFbGVtZW50RXZlbnRIYW5kbGVyQXR0cihjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgCisgICAgLy8gVjhQYXJhbWV0ZXIgaXMgYW4g
YWRhcHRlciBjbGFzcyB0aGF0IGNvbnZlcnRzIFY4IHZhbHVlcyB0byBTdHJpbmdzCisgICAgLy8g
b3IgQXRvbWljU3RyaW5ncyBhcyBhcHByb3ByaWF0ZSwgdXNpbmcgbXVsdGlwbGUgdHlwZWNhc3Qg
b3BlcmF0b3JzLgorICAgIGVudW0gVjhQYXJhbWV0ZXJNb2RlIHsKKyAgICAgICAgRGVmYXVsdE1v
ZGUsCisgICAgICAgIFdpdGhOdWxsQ2hlY2ssCisgICAgICAgIFdpdGhVbmRlZmluZWRPck51bGxD
aGVjaworICAgIH07CisgICAgdGVtcGxhdGUgPFY4UGFyYW1ldGVyTW9kZSBNT0RFID0gRGVmYXVs
dE1vZGU+CisgICAgY2xhc3MgVjhQYXJhbWV0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgVjhQ
YXJhbWV0ZXIgKHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCkgOm1fdjhPYmplY3Qob2JqZWN0
KSB7IH0KKyAgICAgICAgb3BlcmF0b3IgU3RyaW5nKCk7CisgICAgICAgIG9wZXJhdG9yIEF0b21p
Y1N0cmluZygpOworICAgIHByaXZhdGU6CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG1f
djhPYmplY3Q7CisgICAgfTsKKyAgICAKKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRl
cjxEZWZhdWx0TW9kZT46Om9wZXJhdG9yIFN0cmluZygpIHsgcmV0dXJuIHRvV2ViQ29yZVN0cmlu
ZyhtX3Y4T2JqZWN0KTsgfQorICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFyYW1ldGVyPFdpdGhO
dWxsQ2hlY2s+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNvcmVTdHJpbmdXaXRo
TnVsbENoZWNrKG1fdjhPYmplY3QpOyB9CisgICAgdGVtcGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0
ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPjo6b3BlcmF0b3IgU3RyaW5nKCkgeyByZXR1cm4g
dG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKG1fdjhPYmplY3QpOyB9CisK
KyAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxEZWZhdWx0TW9kZT46Om9wZXJhdG9y
IEF0b21pY1N0cmluZygpIHsgcmV0dXJuIHY4VmFsdWVUb0F0b21pY1dlYkNvcmVTdHJpbmcobV92
OE9iamVjdCk7IH0KKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRoTnVsbENo
ZWNrPjo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1cm4gdG9BdG9taWNXZWJDb3JlU3Ry
aW5nV2l0aE51bGxDaGVjayhtX3Y4T2JqZWN0KTsgfQorICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4
UGFyYW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz46Om9wZXJhdG9yIEF0b21pY1N0cmlu
ZygpIHsgcmV0dXJuIHRvQXRvbWljV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobV92OE9iamVj
dCk7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL2Nzcy9XZWJL
aXRDU1NLZXlmcmFtZXNSdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5oCShyZXZpc2lvbiA1MTA2MikKKysrIFdlYkNvcmUvY3NzL1dlYktpdENT
U0tleWZyYW1lc1J1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgLy8gdGhlbXNlbHZlcywgb3Iga25vdyB0aGF0IGl0IHdpbGwgZ2V0IGNhbGxlZCBsYXRl
ci4KICAgICB2b2lkIHNldE5hbWVJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgeyAg
IAotICAgICAgICBtX25hbWUgPSBuYW1lOworICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmco
bmFtZSk7CiAgICAgfQogCiAgICAgQ1NTUnVsZUxpc3QqIGNzc1J1bGVzKCkgeyByZXR1cm4gbV9s
c3RDU1NSdWxlcy5nZXQoKTsgfQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gNTEwNjIpCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAg
bW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4Q3VzdG9tXSBET01J
bXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEVsZW1lbnQgZG9jdW1lbnRFbGVtZW50OwogCi0gICAgICAgIFtSZXR1cm5zTmV3XSBFbGVtZW50
IGNyZWF0ZUVsZW1lbnQoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBIaW50QXRvbWljXSBE
T01TdHJpbmcgdGFnTmFtZSkKKyAgICAgICAgW1JldHVybnNOZXddIEVsZW1lbnQgY3JlYXRlRWxl
bWVudChpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0YWdOYW1lKQogICAg
ICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBEb2N1bWVudEZyYWdtZW50
ICAgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICBbUmV0dXJuc05ld10gVGV4dCBj
cmVhdGVUZXh0Tm9kZShpbiBET01TdHJpbmcgZGF0YSk7CkBAIC02NCw3ICs2NCw3IEBAIG1vZHVs
ZSBjb3JlIHsKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW09s
ZFN0eWxlT2JqQ10gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBbQ29udmVydE51
bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2Fs
TmFtZSk7Ci0gICAgICAgIEVsZW1lbnQgICAgICAgICAgICBnZXRFbGVtZW50QnlJZChpbiBbSGlu
dEF0b21pY10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CisgICAgICAgIEVsZW1lbnQgICAgICAgICAg
ICBnZXRFbGVtZW50QnlJZChpbiBET01TdHJpbmcgZWxlbWVudElkKTsKIAogICAgICAgICAvLyBE
T00gTGV2ZWwgMyBDb3JlCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmgJ
KHJldmlzaW9uIDUxMDYyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCwxNCBAQAogI2luY2x1ZGUgIkF0b21pY1N0cmlu
Z0ltcGwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCisvLyBEZWZpbmUgJ05PX0lN
UExJQ0lUX0FUT01JQ1NUUklORycgYmVmb3JlIGluY2x1ZGluZyB0aGlzIGhlYWRlciwKKy8vIHRv
IGRpc2FsbG93IChleHBlbnNpdmUpIGltcGxpY2l0IFN0cmluZy0tPkF0b21pY1N0cmluZyBjb252
ZXJzaW9ucy4KKyNpZmRlZiBOT19JTVBMSUNJVF9BVE9NSUNTVFJJTkcKKyNkZWZpbmUgQVRPTUlD
U1RSSU5HX0NPTlZFUlNJT04gZXhwbGljaXQKKyNlbHNlCisjZGVmaW5lIEFUT01JQ1NUUklOR19D
T05WRVJTSU9OCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXRvbWlj
U3RyaW5nSGFzaDsKQEAgLTQwLDkgKzQ4LDkgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmluZyhj
b25zdCBKU0M6OlVTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBBdG9taWNT
dHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAj
ZW5kaWYKLSAgICBBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGFkZChp
bXApKSB7IH0KKyAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoU3RyaW5n
SW1wbCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7IH0KICAgICBBdG9taWNTdHJpbmcoQXRv
bWljU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGltcCkgeyB9Ci0gICAgQXRvbWljU3RyaW5n
KGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KKyAgICBBVE9N
SUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3Ry
aW5nKGFkZChzLmltcGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVl
cywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95
ZWQuCiAgICAgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBt
X3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiA1MTA2MikKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDcgKzQ3NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgUHJvcGVydHlTeW5jaHJvbml6ZXI8T3duZXJFbGVtZW50
LCBEZWNvcmF0ZWRUeXBlLCB0cnVlPiA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgc3RhdGljIHZv
aWQgc3luY2hyb25pemUoY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIERlY29yYXRlZFR5cGUgYmFzZVZhbHVlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZHQW5pbWF0ZWRUeXBlVmFs
dWU8RGVjb3JhdGVkVHlwZT46OnRvU3RyaW5nKGJhc2VWYWx1ZSkpOworICAgICAgICAgICAgU3Ry
aW5nIHZhbHVlKFNWR0FuaW1hdGVkVHlwZVZhbHVlPERlY29yYXRlZFR5cGU+Ojp0b1N0cmluZyhi
YXNlVmFsdWUpKTsKIAogICAgICAgICAgICAgTmFtZWROb2RlTWFwKiBuYW1lZEF0dHJNYXAgPSBv
d25lckVsZW1lbnQtPmF0dHJpYnV0ZXMoZmFsc2UpOyAKICAgICAgICAgICAgIEF0dHJpYnV0ZSog
b2xkID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOwpAQCAt
NDgzLDcgKzQ4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGVsc2UgaWYg
KCFvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKSAKICAgICAgICAgICAgICAgICBuYW1lZEF0dHJNYXAt
PmFkZEF0dHJpYnV0ZShjb25zdF9jYXN0PE93bmVyRWxlbWVudCo+KG93bmVyRWxlbWVudCktPmNy
ZWF0ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCB2YWx1ZSkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAob2xkICYmICF2YWx1ZS5pc051bGwoKSkgCi0gICAgICAgICAgICAgICAgb2xkLT5zZXRWYWx1
ZSh2YWx1ZSk7IAorICAgICAgICAgICAgICAgIG9sZC0+c2V0VmFsdWUoQXRvbWljU3RyaW5nKHZh
bHVlKSk7IAogICAgICAgICB9CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUZW1wbGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxh
dGUuaAkocmV2aXNpb24gNTEwNjIpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHR5cGVkZWYgVHlwZSogRGVjb3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0aWMg
VHlwZSBudWxsKCkgeyByZXR1cm4gMDsgfQotICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRv
U3RyaW5nKFR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA/IEF0b21pY1N0cmluZyh0eXBlLT52YWx1
ZUFzU3RyaW5nKCkpIDogbnVsbEF0b207IH0KKyAgICAgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyB0eXBlLT52YWx1ZUFzU3RyaW5nKCkgOiBTdHJp
bmcoKTsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CkBAIC0xODEsNyArMTgxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0eXBlZGVmIGJvb2wgRGVjb3JhdGVkVHlwZTsKIAog
ICAgICAgICBzdGF0aWMgYm9vbCBudWxsKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgc3Rh
dGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhib29sIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1
ZSIgOiAiZmFsc2UiOyB9CisgICAgICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoYm9vbCB0eXBl
KSB7IHJldHVybiB0eXBlID8gInRydWUiIDogImZhbHNlIjsgfQogICAgIH07CiAKICAgICB0ZW1w
bGF0ZTw+CkBAIC0xOTAsNyArMTkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0
eXBlZGVmIGludCBEZWNvcmF0ZWRUeXBlOwogCiAgICAgICAgIHN0YXRpYyBpbnQgbnVsbCgpIHsg
cmV0dXJuIDA7IH0KLSAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhpbnQgdHlw
ZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KKyAgICAgICAgc3RhdGljIFN0cmlu
ZyB0b1N0cmluZyhpbnQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KICAg
ICB9OwogCiAgICAgdGVtcGxhdGU8PgpAQCAtMTk5LDcgKzE5OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdHlwZWRlZiBsb25nIERlY29yYXRlZFR5cGU7CiAKICAgICAgICAgc3Rh
dGljIGxvbmcgbnVsbCgpIHsgcmV0dXJuIDBsOyB9Ci0gICAgICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgdG9TdHJpbmcobG9uZyB0eXBlKSB7IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQor
ICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGxvbmcgdHlwZSkgeyByZXR1cm4gU3RyaW5n
OjpudW1iZXIodHlwZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgpAQCAtMjA4LDcgKzIw
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBTVkdMZW5ndGggRGVj
b3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0aWMgU1ZHTGVuZ3RoIG51bGwoKSB7IHJldHVybiBT
VkdMZW5ndGgoKTsgfQotICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IFNWR0xlbmd0aCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KKyAgICAg
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdMZW5ndGgmIHR5cGUpIHsgcmV0dXJu
IHR5cGUudmFsdWVBc1N0cmluZygpOyB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KQEAgLTIx
Nyw3ICsyMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgZmxvYXQg
RGVjb3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0aWMgZmxvYXQgbnVsbCgpIHsgcmV0dXJuIDAu
MGY7IH0KLSAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhmbG9hdCB0eXBlKSB7
IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGZsb2F0IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9CiAgICAg
fTsKIAogICAgIHRlbXBsYXRlPD4KQEAgLTIyNiw3ICsyMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHR5cGVkZWYgRmxvYXRSZWN0IERlY29yYXRlZFR5cGU7CiAKICAgICAgICAg
c3RhdGljIEZsb2F0UmVjdCBudWxsKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KLSAgICAgICAg
c3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhjb25zdCBGbG9hdFJlY3QmIHR5cGUpIHsgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCIlZiAlZiAlZiAlZiIsIHR5cGUueCgpLCB0eXBlLnkoKSwgdHlw
ZS53aWR0aCgpLCB0eXBlLmhlaWdodCgpKTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IEZsb2F0UmVjdCYgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVmICVm
ICVmICVmIiwgdHlwZS54KCksIHR5cGUueSgpLCB0eXBlLndpZHRoKCksIHR5cGUuaGVpZ2h0KCkp
OyB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KQEAgLTIzNSw3ICsyMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgU3RyaW5nIERlY29yYXRlZFR5cGU7CiAKICAg
ICAgICAgc3RhdGljIFN0cmluZyBudWxsKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAgICAg
c3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIHsgcmV0dXJu
IHR5cGU7IH0KKyAgICAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTdHJpbmcmIHR5
cGUpIHsgcmV0dXJuIHR5cGU7IH0KICAgICB9OwogCiAgICAgLy8gQ29tbW9uIHR5cGUgZGVmaW5p
dGlvbnMsIHRvIGVhc2UgSURMIGdlbmVyYXRpb24uCg==
</data>
<flag name="review"
          id="25147"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>