<?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>52699</bug_id>
          
          <creation_ts>2011-01-18 21:48:26 -0800</creation_ts>
          <short_desc>Allow Fixed Length values to be floating point</short_desc>
          <delta_ts>2011-03-13 15:57:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55386</dependson>
    
    <dependson>55799</dependson>
    
    <dependson>56275</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>aroben</cc>
    
    <cc>cabanier</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>ml</cc>
    
    <cc>pfeldman</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336332</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 21:48:26 -0800</bug_when>
    <thetext>All Fixed Length values are currently truncated to ints. This is an issue for transforms, where the Length arguments to the various transform functions should really be floating point. Since we also interpolate through Lengths, this means that interpolated values are rounded to integers too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347431</commentid>
    <comment_count>1</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-08 09:07:14 -0800</bug_when>
    <thetext>*** Bug 53836 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347914</commentid>
    <comment_count>2</comment_count>
      <attachid>81737</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-08 20:06:01 -0800</bug_when>
    <thetext>Created attachment 81737
Extends the Length class so it can store floating point values.

The Length class now stores 8 bits for floating point and 16 for integer. This changes loses the range of values that this class takes and gives a limited range for floating. Another way of fixing this would be to add a union, but this would increase the memory footprint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347932</commentid>
    <comment_count>3</comment_count>
      <attachid>81737</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-08 20:53:49 -0800</bug_when>
    <thetext>Comment on attachment 81737
Extends the Length class so it can store floating point values.

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

&gt; Source/WebCore/ChangeLog:7
&gt; +        No new tests. However, this fix can introduce differences in existing tests since it can make a small difference in layout

In that case the patch needs to include new results for all the affected tests.

This changelog entry needs to mention the changes in Length behavior.

&gt; Source/WebCore/platform/Length.h:33
&gt; -const int percentScaleFactor = 128;
&gt; -const int intMaxForLength = 0x7ffffff; // max value for a 28-bit int
&gt; -const int intMinForLength = (-0x7ffffff - 1); // min value for a 28-bit int
&gt; +const int intMaxForLength = 0x7ffff; // max value for a 20-bit int
&gt; +const int intMinForLength = (-0x7ffff - 1); // min value for a 20-bit int

I don&apos;t think it&apos;s acceptable to change the max and min int values that Length can store. That might break websites (which do things like z-index: 999999999).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348031</commentid>
    <comment_count>4</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-09 00:10:07 -0800</bug_when>
    <thetext>&gt; 
&gt; In that case the patch needs to include new results for all the affected tests.
Will do so

&gt; 
&gt; This changelog entry needs to mention the changes in Length behavior.
&gt; 
&gt; &gt; Source/WebCore/platform/Length.h:33
&gt; &gt; -const int percentScaleFactor = 128;
&gt; &gt; -const int intMaxForLength = 0x7ffffff; // max value for a 28-bit int
&gt; &gt; -const int intMinForLength = (-0x7ffffff - 1); // min value for a 28-bit int
&gt; &gt; +const int intMaxForLength = 0x7ffff; // max value for a 20-bit int
&gt; &gt; +const int intMinForLength = (-0x7ffff - 1); // min value for a 20-bit int
&gt; 
&gt; I don&apos;t think it&apos;s acceptable to change the max and min int values that Length can store. That might break websites (which do things like z-index: 999999999).

That doesn&apos;t work today either. Length can store at most 134217472 which is less than 999999999. The class also doesn&apos;t do bounds checking, so the larger value will overflow and become garbage.

It seems that making it a full int or float is the correct solution. Is it acceptable that the class takes up 4 more bytes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348241</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-09 07:59:12 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; 
&gt; &gt; In that case the patch needs to include new results for all the affected tests.
&gt; Will do so
&gt; 
&gt; &gt; 
&gt; &gt; This changelog entry needs to mention the changes in Length behavior.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/Length.h:33
&gt; &gt; &gt; -const int percentScaleFactor = 128;
&gt; &gt; &gt; -const int intMaxForLength = 0x7ffffff; // max value for a 28-bit int
&gt; &gt; &gt; -const int intMinForLength = (-0x7ffffff - 1); // min value for a 28-bit int
&gt; &gt; &gt; +const int intMaxForLength = 0x7ffff; // max value for a 20-bit int
&gt; &gt; &gt; +const int intMinForLength = (-0x7ffff - 1); // min value for a 20-bit int
&gt; &gt; 
&gt; &gt; I don&apos;t think it&apos;s acceptable to change the max and min int values that Length can store. That might break websites (which do things like z-index: 999999999).
&gt; 
&gt; That doesn&apos;t work today either. Length can store at most 134217472 which is less than 999999999. The class also doesn&apos;t do bounds checking, so the larger value will overflow and become garbage.

Bounds checking should happen elsewhere (e.g. in CSSPrimitiveValue methods).

&gt; It seems that making it a full int or float is the correct solution. Is it acceptable that the class takes up 4 more bytes?

I don&apos;t know; we pass Lengths by value all over the place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348497</commentid>
    <comment_count>6</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-09 13:20:48 -0800</bug_when>
    <thetext>999).
&gt; &gt; 
&gt; &gt; That doesn&apos;t work today either. Length can store at most 134217472 which is less than 999999999. The class also doesn&apos;t do bounds checking, so the larger value will overflow and become garbage.
&gt; 
&gt; Bounds checking should happen elsewhere (e.g. in CSSPrimitiveValue methods).
&gt; 
I&apos;ll check there too...
&gt; &gt; It seems that making it a full int or float is the correct solution. Is it acceptable that the class takes up 4 more bytes?
&gt; 
&gt; I don&apos;t know; we pass Lengths by value all over the place.

I wasn&apos;t thinking of stack space. Is that a concern?
It was more about heap space if a lot of length objects are stored.

I&apos;ve reimplemented my changes and the browser seems to render content fine, but I can&apos;t get a clean layout test. I reverted all my changes and tests are still failing.

Do I need to do more than sync everything and get the fonts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348501</commentid>
    <comment_count>7</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-09 13:22:22 -0800</bug_when>
    <thetext>My new implementation of length can store an int or float. 
It should behave the same for integer content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348801</commentid>
    <comment_count>8</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-09 21:43:18 -0800</bug_when>
    <thetext>I think the falures are because I don&apos;t have the right fonts on my system.
I&apos;ll try to get them installed or start developing on my mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351768</commentid>
    <comment_count>9</comment_count>
      <attachid>82556</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-15 17:41:27 -0800</bug_when>
    <thetext>Created attachment 82556
Working patch with fixes for 2 layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351769</commentid>
    <comment_count>10</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-15 17:42:17 -0800</bug_when>
    <thetext>I have also have a test file that shows the fix but I&apos;m unsure where it should go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351771</commentid>
    <comment_count>11</comment_count>
      <attachid>82558</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-15 17:43:10 -0800</bug_when>
    <thetext>Created attachment 82558
Working patch with fixes for 2 layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353768</commentid>
    <comment_count>12</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-18 12:49:03 -0800</bug_when>
    <thetext>I would just make the Length always be a float and not have it be both.  Also the bitfield is completely useless now if you use the full 32 bits for the number (it&apos;s not saving you any space), so you can just turn those into bools.

Lots of style errors too.  You might want to flag for review just so you can see the style errors and fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353772</commentid>
    <comment_count>13</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-18 12:55:50 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I would just make the Length always be a float and not have it be both.  Also the bitfield is completely useless now if you use the full 32 bits for the number (it&apos;s not saving you any space), so you can just turn those into bools.
&gt; 
&gt; Lots of style errors too.  You might want to flag for review just so you can see the style errors and fix them.

I was trying to minimize changes to the code. By having it behave differently only when the object is constructed with a float, we keep existing behavior.

My first attempt was to move to just float, but it actually changes the result of a large number of operations. It resulted in a lot of changes all over the code and numerous problems and differences in the layout tests.
Float also has less significant digits than int...

The bitfield is actually still necessary because part of the table logic multiplies by 128. If the value was maxint, it results in overflows which cause incorrect layout.

I will look at the style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353778</commentid>
    <comment_count>14</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-18 13:04:17 -0800</bug_when>
    <thetext>You can just ditch rawValue also instead of keeping it.  It has no meaning if the value isn&apos;t being hacked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353788</commentid>
    <comment_count>15</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-18 13:11:34 -0800</bug_when>
    <thetext>I guess the union is fine for now.  The engine&apos;s eventually going to move to floats, though, but if you want to keep ints in the underlying storage temporarily I suppose that&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353899</commentid>
    <comment_count>16</comment_count>
      <attachid>83031</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-18 15:51:59 -0800</bug_when>
    <thetext>Created attachment 83031
new patch that fixes the style + removes setRawValue calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353900</commentid>
    <comment_count>17</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-18 15:53:03 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; You can just ditch rawValue also instead of keeping it.  It has no meaning if the value isn&apos;t being hacked.

I removed the setRawValue calls. However, I didn&apos;t remove the getRawValue because parts of the code use this to extract percentage values in fixed notation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356527</commentid>
    <comment_count>18</comment_count>
      <attachid>83572</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-23 16:20:29 -0800</bug_when>
    <thetext>Created attachment 83572
split Length calculation in 2 seperate functions as not to disturb non-transform parameters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357438</commentid>
    <comment_count>19</comment_count>
      <attachid>83725</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-24 15:12:34 -0800</bug_when>
    <thetext>Created attachment 83725
removed bit specifiers in Length structure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358009</commentid>
    <comment_count>20</comment_count>
      <attachid>83831</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-02-25 10:25:14 -0800</bug_when>
    <thetext>Created attachment 83831
moved &apos;unsigned char&apos; to &apos;bool&apos; type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358215</commentid>
    <comment_count>21</comment_count>
      <attachid>83831</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-25 14:55:38 -0800</bug_when>
    <thetext>Comment on attachment 83831
moved &apos;unsigned char&apos; to &apos;bool&apos; type

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358488</commentid>
    <comment_count>22</comment_count>
      <attachid>83831</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-26 06:40:35 -0800</bug_when>
    <thetext>Comment on attachment 83831
moved &apos;unsigned char&apos; to &apos;bool&apos; type

Clearing flags on attachment: 83831

Committed r79784: &lt;http://trac.webkit.org/changeset/79784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358489</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-26 06:40:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358555</commentid>
    <comment_count>24</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-26 11:25:37 -0800</bug_when>
    <thetext>Since recently, I am seeing assertion failure upon opening Web Inspector&apos;s network panel:

(filed https://bugs.webkit.org/show_bug.cgi?id=55301 to track it).

#0	0x1015d9687 in WebCore::Length::setValue at Length.h:91
#1	0x1019104ab in WebCore::FixedTableLayout::calcWidthArray at FixedTableLayout.cpp:121
#2	0x10191095f in WebCore::FixedTableLayout::computePreferredLogicalWidths at FixedTableLayout.cpp:204
#3	0x1020794d3 in WebCore::RenderTable::computePreferredLogicalWidths at RenderTable.cpp:574
#4	0x101f8c035 in WebCore::RenderBox::minPreferredLogicalWidth at RenderBox.cpp:659
#5	0x10207b2dc in WebCore::RenderTable::computeLogicalWidth at RenderTable.cpp:219
#6	0x10207a5f4 in WebCore::RenderTable::layout at RenderTable.cpp:278
#7	0x101f5ed92 in WebCore::RenderBlock::layoutBlockChild at RenderBlock.cpp:1958
#8	0x101f6093f in WebCore::RenderBlock::layoutBlockChildren at RenderBlock.cpp:1896
#9	0x101f60fb4 in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1224
#10	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#11	0x101f83337 in WebCore::RenderObject::layoutIfNeeded at RenderObject.h:520
#12	0x101f5df34 in WebCore::RenderBlock::layoutPositionedObjects at RenderBlock.cpp:2137
#13	0x101f6128f in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1255
#14	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#15	0x101f83337 in WebCore::RenderObject::layoutIfNeeded at RenderObject.h:520
#16	0x101f5df34 in WebCore::RenderBlock::layoutPositionedObjects at RenderBlock.cpp:2137
#17	0x101f6128f in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1255
#18	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#19	0x101f83337 in WebCore::RenderObject::layoutIfNeeded at RenderObject.h:520
#20	0x101f5df34 in WebCore::RenderBlock::layoutPositionedObjects at RenderBlock.cpp:2137
#21	0x101f6128f in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1255
#22	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#23	0x101f83337 in WebCore::RenderObject::layoutIfNeeded at RenderObject.h:520
#24	0x101f5df34 in WebCore::RenderBlock::layoutPositionedObjects at RenderBlock.cpp:2137
#25	0x101f6128f in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1255
#26	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#27	0x101f83337 in WebCore::RenderObject::layoutIfNeeded at RenderObject.h:520
#28	0x101f5df34 in WebCore::RenderBlock::layoutPositionedObjects at RenderBlock.cpp:2137
#29	0x101f5fe50 in WebCore::RenderBlock::layoutOnlyPositionedObjects at RenderBlock.cpp:2087
#30	0x101f60a4e in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1135
#31	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#32	0x101f83337 in WebCore::RenderObject::layoutIfNeeded at RenderObject.h:520
#33	0x101f5df34 in WebCore::RenderBlock::layoutPositionedObjects at RenderBlock.cpp:2137
#34	0x101f5fe50 in WebCore::RenderBlock::layoutOnlyPositionedObjects at RenderBlock.cpp:2087
#35	0x101f60a4e in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1135
#36	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#37	0x101f83337 in WebCore::RenderObject::layoutIfNeeded at RenderObject.h:520
#38	0x101f5df34 in WebCore::RenderBlock::layoutPositionedObjects at RenderBlock.cpp:2137
#39	0x101f5fe50 in WebCore::RenderBlock::layoutOnlyPositionedObjects at RenderBlock.cpp:2087
#40	0x101f60a4e in WebCore::RenderBlock::layoutBlock at RenderBlock.cpp:1135
#41	0x101f5fc6e in WebCore::RenderBlock::layout at RenderBlock.cpp:1120
#42	0x1020b6fc3 in WebCore::RenderView::layout at RenderView.cpp:130
#43	0x101966cfc in WebCore::FrameView::layout at FrameView.cpp:906
#44	0x1017a5ef9 in WebCore::Document::updateLayout at Document.cpp:1592
#45	0x1017a85b8 in WebCore::Document::updateLayoutIgnorePendingStylesheets at Document.cpp:1623
#46	0x1018cd774 in WebCore::Element::focus at Element.cpp:1498
#47	0x101c3e412 in WebCore::jsElementPrototypeFunctionFocus at JSElement.cpp:1761
#48	0x279468c001b8 in ??
#49	0x1007e21f7 in JSC::JITCode::execute at JITCode.h:77
#50	0x1007dcc56 in JSC::Interpreter::executeCall at Interpreter.cpp:851
#51	0x10079632d in JSC::call at CallData.cpp:38
#52	0x100847b89 in JSC::JSObject::put at JSObject.cpp:149
#53	0x100815fbd in JSC::JSValue::put at JSObject.h:780
#54	0x10080f0ab in cti_op_put_by_id at JITStubs.cpp:1351
#55	0x100803dcd in WTF::doubleHash at HashTable.h:447
#56	0x1007e21f7 in JSC::JITCode::execute at JITCode.h:77
#57	0x1007dcc56 in JSC::Interpreter::executeCall at Interpreter.cpp:851
#58	0x10079632d in JSC::call at CallData.cpp:38
#59	0x100847b89 in JSC::JSObject::put at JSObject.cpp:149
#60	0x100815fbd in JSC::JSValue::put at JSObject.h:780
#61	0x10080f0ab in cti_op_put_by_id at JITStubs.cpp:1351
#62	0x100803dcd in WTF::doubleHash at HashTable.h:447
#63	0x1007e21f7 in JSC::JITCode::execute at JITCode.h:77
#64	0x1007dcc56 in JSC::Interpreter::executeCall at Interpreter.cpp:851
#65	0x10079632d in JSC::call at CallData.cpp:38
#66	0x1022d2f41 in WebCore::JSMainThreadExecState::call at JSMainThreadExecState.h:48
#67	0x101c50447 in WebCore::JSEventListener::handleEvent at JSEventListener.cpp:123
#68	0x1018ed642 in WebCore::EventTarget::fireEventListeners at EventTarget.cpp:354
#69	0x1018edc71 in WebCore::EventTarget::fireEventListeners at EventTarget.cpp:323
#70	0x101ec7d8f in WebCore::Node::handleLocalEvents at Node.cpp:2543
#71	0x1018d78d6 in WebCore::EventContext::handleLocalEvents at EventContext.cpp:48
#72	0x101ecff58 in WebCore::Node::dispatchGenericEvent at Node.cpp:2694
#73	0x101ed0379 in WebCore::Node::dispatchEvent at Node.cpp:2612
#74	0x101eceb58 in WebCore::Node::dispatchMouseEvent at Node.cpp:2902
#75	0x101ecf183 in WebCore::Node::dispatchMouseEvent at Node.cpp:2799
#76	0x1018df9af in WebCore::EventHandler::dispatchMouseEvent at EventHandler.cpp:1910
#77	0x1018e0f90 in WebCore::EventHandler::handleMouseReleaseEvent at EventHandler.cpp:1623
#78	0x1018e6fd5 in WebCore::EventHandler::mouseUp at EventHandlerMac.mm:546
#79	0x100ff8b3c in -[WebHTMLView mouseUp:] at WebHTMLView.mm:3764
#80	0x7fff8568d7ed in -[NSWindow sendEvent:]
#81	0x100041bf5 in ??
#82	0x100041b81 in ??
#83	0x7fff855c2ee2 in -[NSApplication sendEvent:]
#84	0x1000388c2 in ??
#85	0x7fff85559922 in -[NSApplication run]
#86	0x7fff855525f8 in NSApplicationMain
#87	0x100009b18 in ??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358681</commentid>
    <comment_count>25</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-27 08:33:22 -0800</bug_when>
    <thetext>This commit is causing a lot of crashes in the gtk debug bots:

http://webkit-bots.igalia.com/amd64/svn_79817.core-when_1298824044-_-who_DumpRenderTree-_-why_11.trace.html

Thread 1 (Thread 17474):
#0  0x00007fde3407987e in WebCore::Length::setValue (this=0x1b54620, t=WebCore::Percent, value=2304) at ../../Source/WebCore/platform/Length.h:91
#1  0x00007fde3407e4fd in WebCore::FixedTableLayout::calcWidthArray (this=0x188c830) at ../../Source/WebCore/rendering/FixedTableLayout.cpp:121
#2  0x00007fde3407e9b7 in WebCore::FixedTableLayout::computePreferredLogicalWidths (this=0x188c830, minWidth=@0x1b3e578, maxWidth=@0x1b3e57c) at ../../Source/WebCore/rendering/FixedTableLayout.cpp:204
#3  0x00007fde3417b05e in WebCore::RenderTable::computePreferredLogicalWidths (this=0x1b3e518) at ../../Source/WebCore/rendering/RenderTable.cpp:574
#4  0x00007fde340ec421 in WebCore::RenderBox::minPreferredLogicalWidth (this=0x1b3e518) at ../../Source/WebCore/rendering/RenderBox.cpp:659
#5  0x00007fde34178e77 in WebCore::RenderTable::computeLogicalWidth (this=0x1b3e518) at ../../Source/WebCore/rendering/RenderTable.cpp:219
#6  0x00007fde3417951f in WebCore::RenderTable::layout (this=0x1b3e518) at ../../Source/WebCore/rendering/RenderTable.cpp:278
#7  0x00007fde340aaeea in WebCore::RenderBlock::layoutBlockChild (this=0x194a5a8, child=0x1b3e518, marginInfo=..., previousFloatLogicalBottom=@0x7fffbb9d376c, maxFloatLogicalBottom=@0x7fffbb9d38c4) at ../../Source/WebCore/rendering/RenderBlock.cpp:1961
#8  0x00007fde340aaaff in WebCore::RenderBlock::layoutBlockChildren (this=0x194a5a8, relayoutChildren=true, maxFloatLogicalBottom=@0x7fffbb9d38c4) at ../../Source/WebCore/rendering/RenderBlock.cpp:1899
#9  0x00007fde340a7a80 in WebCore::RenderBlock::layoutBlock (this=0x194a5a8, relayoutChildren=true, pageLogicalHeight=0) at ../../Source/WebCore/rendering/RenderBlock.cpp:1226
#10 0x00007fde340a7382 in WebCore::RenderBlock::layout (this=0x194a5a8) at ../../Source/WebCore/rendering/RenderBlock.cpp:1122
#11 0x00007fde340aaeea in WebCore::RenderBlock::layoutBlockChild (this=0x1b0b3a8, child=0x194a5a8, marginInfo=..., previousFloatLogicalBottom=@0x7fffbb9d3b7c, maxFloatLogicalBottom=@0x7fffbb9d3cd4) at ../../Source/WebCore/rendering/RenderBlock.cpp:1961
#12 0x00007fde340aaaff in WebCore::RenderBlock::layoutBlockChildren (this=0x1b0b3a8, relayoutChildren=false, maxFloatLogicalBottom=@0x7fffbb9d3cd4) at ../../Source/WebCore/rendering/RenderBlock.cpp:1899
#13 0x00007fde340a7a80 in WebCore::RenderBlock::layoutBlock (this=0x1b0b3a8, relayoutChildren=false, pageLogicalHeight=0) at ../../Source/WebCore/rendering/RenderBlock.cpp:1226
#14 0x00007fde340a7382 in WebCore::RenderBlock::layout (this=0x1b0b3a8) at ../../Source/WebCore/rendering/RenderBlock.cpp:1122
#15 0x00007fde340c001d in WebCore::RenderObject::layoutIfNeeded (this=0x1b0b3a8) at ../../Source/WebCore/rendering/RenderObject.h:520
#16 0x00007fde340abacc in WebCore::RenderBlock::layoutPositionedObjects (this=0x1801048, relayoutChildren=false) at ../../Source/WebCore/rendering/RenderBlock.cpp:2140
#17 0x00007fde340ab7a4 in WebCore::RenderBlock::layoutOnlyPositionedObjects (this=0x1801048) at ../../Source/WebCore/rendering/RenderBlock.cpp:2090
#18 0x00007fde340a74b1 in WebCore::RenderBlock::layoutBlock (this=0x1801048, relayoutChildren=false, pageLogicalHeight=0) at ../../Source/WebCore/rendering/RenderBlock.cpp:1137
#19 0x00007fde340a7382 in WebCore::RenderBlock::layout (this=0x1801048) at ../../Source/WebCore/rendering/RenderBlock.cpp:1122
#20 0x00007fde340c001d in WebCore::RenderObject::layoutIfNeeded (this=0x1801048) at ../../Source/WebCore/rendering/RenderObject.h:520
#21 0x00007fde340abacc in WebCore::RenderBlock::layoutPositionedObjects (this=0xc03988, relayoutChildren=false) at ../../Source/WebCore/rendering/RenderBlock.cpp:2140
#22 0x00007fde340ab7a4 in WebCore::RenderBlock::layoutOnlyPositionedObjects (this=0xc03988) at ../../Source/WebCore/rendering/RenderBlock.cpp:2090
#23 0x00007fde340a74b1 in WebCore::RenderBlock::layoutBlock (this=0xc03988, relayoutChildren=false, pageLogicalHeight=0) at ../../Source/WebCore/rendering/RenderBlock.cpp:1137
#24 0x00007fde340a7382 in WebCore::RenderBlock::layout (this=0xc03988) at ../../Source/WebCore/rendering/RenderBlock.cpp:1122
#25 0x00007fde340c001d in WebCore::RenderObject::layoutIfNeeded (this=0xc03988) at ../../Source/WebCore/rendering/RenderObject.h:520
#26 0x00007fde340abacc in WebCore::RenderBlock::layoutPositionedObjects (this=0x1d6d698, relayoutChildren=false) at ../../Source/WebCore/rendering/RenderBlock.cpp:2140
#27 0x00007fde340ab7a4 in WebCore::RenderBlock::layoutOnlyPositionedObjects (this=0x1d6d698) at ../../Source/WebCore/rendering/RenderBlock.cpp:2090
#28 0x00007fde340a74b1 in WebCore::RenderBlock::layoutBlock (this=0x1d6d698, relayoutChildren=false, pageLogicalHeight=0) at ../../Source/WebCore/rendering/RenderBlock.cpp:1137
#29 0x00007fde340a7382 in WebCore::RenderBlock::layout (this=0x1d6d698) at ../../Source/WebCore/rendering/RenderBlock.cpp:1122
#30 0x00007fde340c001d in WebCore::RenderObject::layoutIfNeeded (this=0x1d6d698) at ../../Source/WebCore/rendering/RenderObject.h:520
#31 0x00007fde340abacc in WebCore::RenderBlock::layoutPositionedObjects (this=0x1d6cff8, relayoutChildren=false) at ../../Source/WebCore/rendering/RenderBlock.cpp:2140
#32 0x00007fde340ab7a4 in WebCore::RenderBlock::layoutOnlyPositionedObjects (this=0x1d6cff8) at ../../Source/WebCore/rendering/RenderBlock.cpp:2090
#33 0x00007fde340a74b1 in WebCore::RenderBlock::layoutBlock (this=0x1d6cff8, relayoutChildren=false, pageLogicalHeight=0) at ../../Source/WebCore/rendering/RenderBlock.cpp:1137
#34 0x00007fde340a7382 in WebCore::RenderBlock::layout (this=0x1d6cff8) at ../../Source/WebCore/rendering/RenderBlock.cpp:1122
#35 0x00007fde340c001d in WebCore::RenderObject::layoutIfNeeded (this=0x1d6cff8) at ../../Source/WebCore/rendering/RenderObject.h:520
#36 0x00007fde340abacc in WebCore::RenderBlock::layoutPositionedObjects (this=0x1d61198, relayoutChildren=false) at ../../Source/WebCore/rendering/RenderBlock.cpp:2140
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358682</commentid>
    <comment_count>26</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-27 08:50:16 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; This commit is causing a lot of crashes in the gtk debug bots:
&gt; 

I meant, assertion failures sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358688</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-27 09:01:43 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/79784 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358700</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-27 09:55:27 -0800</bug_when>
    <thetext>This patch is causing assertion failures on Windows. See bug 55321.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359101</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-28 09:06:42 -0800</bug_when>
    <thetext>Since the assertion failures have been happening for many days now, and a fix is not imminent, we&apos;re rolling out the change. Bug 55386 tracks the rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359105</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-28 09:08:09 -0800</bug_when>
    <thetext>Reopening since this change is getting rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360402</commentid>
    <comment_count>31</comment_count>
      <attachid>84327</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-03-01 17:01:59 -0800</bug_when>
    <thetext>Created attachment 84327
Updated patch with version that doesn&apos;t assert in debug mode

This time I verified that the layout tests also pass in debug mode :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360432</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-01 17:31:06 -0800</bug_when>
    <thetext>Attachment 84327 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/tran...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.cpp:5590:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361749</commentid>
    <comment_count>33</comment_count>
      <attachid>84588</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-03-03 11:05:58 -0800</bug_when>
    <thetext>Created attachment 84588
Updated patch with version that doesn&apos;t assert in debug mode + fixed style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361755</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-03 11:08:59 -0800</bug_when>
    <thetext>Attachment 84588 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/tran...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.cpp:5672:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361757</commentid>
    <comment_count>35</comment_count>
      <attachid>84591</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-03-03 11:10:32 -0800</bug_when>
    <thetext>Created attachment 84591
Updated patch with version that doesn&apos;t assert in debug mode + fixed style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361759</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-03 11:13:22 -0800</bug_when>
    <thetext>Attachment 84591 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/tran...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.cpp:5672:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361765</commentid>
    <comment_count>37</comment_count>
      <attachid>84594</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-03-03 11:15:01 -0800</bug_when>
    <thetext>Created attachment 84594
Updated patch with version that doesn&apos;t assert in debug mode + fixed style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362626</commentid>
    <comment_count>38</comment_count>
      <attachid>84594</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-03-04 10:53:17 -0800</bug_when>
    <thetext>Comment on attachment 84594
Updated patch with version that doesn&apos;t assert in debug mode + fixed style

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362695</commentid>
    <comment_count>39</comment_count>
      <attachid>84594</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-04 14:23:14 -0800</bug_when>
    <thetext>Comment on attachment 84594
Updated patch with version that doesn&apos;t assert in debug mode + fixed style

Rejecting attachment 84594 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;build-...&quot; exit_code: 2

Last 500 characters of output:
.......................................................................................................................................................................................................................
inspector ...........
inspector/audits .
inspector/audits/audits-panel-functional.html -&gt; failed

Exiting early after 1 failures. 12760 tests run.
307.03s total testing time

12759 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
8 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/8087715</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362711</commentid>
    <comment_count>40</comment_count>
      <attachid>84594</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-04 14:46:30 -0800</bug_when>
    <thetext>Comment on attachment 84594
Updated patch with version that doesn&apos;t assert in debug mode + fixed style

&gt; inspector/audits/audits-panel-functional.html -&gt; failed

I am working on this flaky test, should be robust in 24 hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362726</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-04 15:04:04 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 84594:

inspector/audits/audits-panel-functional.html bug 55776 (authors: apavlov@chromium.org, pfeldman@chromium.org, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362728</commentid>
    <comment_count>42</comment_count>
      <attachid>84594</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-04 15:06:06 -0800</bug_when>
    <thetext>Comment on attachment 84594
Updated patch with version that doesn&apos;t assert in debug mode + fixed style

Clearing flags on attachment: 84594

Committed r80379: &lt;http://trac.webkit.org/changeset/80379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362730</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-04 15:06:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362745</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-04 15:25:18 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80379 might have broken Leopard Intel Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364860</commentid>
    <comment_count>45</comment_count>
      <attachid>85254</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-03-09 16:10:22 -0800</bug_when>
    <thetext>Created attachment 85254
latest fix for leopard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364872</commentid>
    <comment_count>46</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-09 16:23:12 -0800</bug_when>
    <thetext>I verified that attachment 85254 is identical to attachment 84594 which dhyatt r+&apos;d except for a new static_cast&lt;float&gt; to fix the SL build. Since I rolled this back in https://bugs.webkit.org/show_bug.cgi?id=55799, I&apos;m r+&apos;ing to get this going again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365783</commentid>
    <comment_count>47</comment_count>
      <attachid>85254</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-10 20:09:12 -0800</bug_when>
    <thetext>Comment on attachment 85254
latest fix for leopard

Clearing flags on attachment: 85254

Committed r80806: &lt;http://trac.webkit.org/changeset/80806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365784</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-10 20:09:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366745</commentid>
    <comment_count>49</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-13 15:57:16 -0700</bug_when>
    <thetext>Please see bug 56275, this might have broken transitions/default-timing-function.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81737</attachid>
            <date>2011-02-08 20:06:01 -0800</date>
            <delta_ts>2011-02-15 17:41:27 -0800</delta_ts>
            <desc>Extends the Length class so it can store floating point values.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13871</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MDEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDItMDggIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCdWcgNTI2OTkgLSBBbGxvdyBGaXhlZCBMZW5ndGggdmFsdWVz
IHRvIGJlIGZsb2F0aW5nIHBvaW50CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBIb3dldmVyLCB0
aGlzIGZpeCBjYW4gaW50cm9kdWNlIGRpZmZlcmVuY2VzIGluIGV4aXN0aW5nIHRlc3RzIHNpbmNl
IGl0IGNhbiBtYWtlIGEgc21hbGwgZGlmZmVyZW5jZSBpbiBsYXlvdXQKKworICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0
aCk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5n
dGg6Okxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6ZmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OnJhd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6cGVyY2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpMZW5ndGg6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
c2V0UmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmJsZW5k
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6bGF5b3V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisKIDIwMTEtMDItMDggIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hv
d2lhay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDc4MDEwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTc3LDcgKzMxNzcsNyBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpCiAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAg
Km9rID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5p
dFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIp
LCBGaXhlZCk7CisJCQlsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxv
YXQoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgZmFsc2UpLCBGaXhlZCk7CiAgICAgICAg
IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAg
ICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkocmV2aXNpb24gNzgwMTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
MTQgKzI1LDEyIEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25BcnJheVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCB1
bmRlZmluZWRMZW5ndGggPSAtMTsKLWNvbnN0IGludCBwZXJjZW50U2NhbGVGYWN0b3IgPSAxMjg7
Ci1jb25zdCBpbnQgaW50TWF4Rm9yTGVuZ3RoID0gMHg3ZmZmZmZmOyAvLyBtYXggdmFsdWUgZm9y
IGEgMjgtYml0IGludAotY29uc3QgaW50IGludE1pbkZvckxlbmd0aCA9ICgtMHg3ZmZmZmZmIC0g
MSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50Citjb25zdCBpbnQgaW50TWF4Rm9yTGVu
Z3RoID0gMHg3ZmZmZjsgLy8gbWF4IHZhbHVlIGZvciBhIDIwLWJpdCBpbnQKK2NvbnN0IGludCBp
bnRNaW5Gb3JMZW5ndGggPSAoLTB4N2ZmZmYgLSAxKTsgLy8gbWluIHZhbHVlIGZvciBhIDIwLWJp
dCBpbnQKIAogZW51bSBMZW5ndGhUeXBlIHsgQXV0bywgUmVsYXRpdmUsIFBlcmNlbnQsIEZpeGVk
LCBTdGF0aWMsIEludHJpbnNpYywgTWluSW50cmluc2ljIH07CiAKQEAgLTUwLDE1ICs0OCwxNSBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgTGVuZ3RoKGludCB2LCBMZW5ndGhUeXBlIHQsIGJvb2wg
cSA9IGZhbHNlKQotICAgICAgICA6IG1fdmFsdWUoKHYgKiAxNikgfCAocSA8PCAzKSB8IHQpIC8v
IEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYgdGhlIHBhc3NlZC1pbiB2YWx1ZSBpcyB2ZXJ5IGxhcmdl
IQorICAgICAgICA6IG1fdmFsdWUoKHYgPDwgMTIpIHwgKHEgPDwgMykgfCB0KSAvLyBGSVhNRTog
RG9lc24ndCB3b3JrIGlmIHRoZSBwYXNzZWQtaW4gdmFsdWUgaXMgdmVyeSBsYXJnZSEKICAgICB7
CiAgICAgICAgIEFTU0VSVCh0ICE9IFBlcmNlbnQpOwogICAgIH0KIAogICAgIExlbmd0aChkb3Vi
bGUgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKLSAgICAgICAgOiBtX3ZhbHVlKHN0
YXRpY19jYXN0PGludD4odiAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8IChxIDw8IDMpIHwg
dCkKKyAgICAgICAgOiBtX3ZhbHVlKChzdGF0aWNfY2FzdDxpbnQ+KHYgKiAyNTYpIDw8IDQpIHwg
KHEgPDwgMykgfCB0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7CisKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlID09IG8ubV92YWx1ZTsgfQpAQCAtNjYsMTUgKzY0LDIwIEBAIHB1YmxpYzoKIAog
ICAgIGludCB2YWx1ZSgpIGNvbnN0IHsKICAgICAgICAgQVNTRVJUKHR5cGUoKSAhPSBQZXJjZW50
KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmF3VmFsdWUoKSk7CisgICAgfQor
CisJZmxvYXQgZmxvYXRWYWx1ZSgpIGNvbnN0IHsKKwkJQVNTRVJUKHR5cGUoKSAhPSBQZXJjZW50
KTsKICAgICAgICAgcmV0dXJuIHJhd1ZhbHVlKCk7CiAgICAgfQogCi0gICAgaW50IHJhd1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gKG1fdmFsdWUgJiB+MHhGKSAvIDE2OyB9CisgICAgZmxvYXQgcmF3
VmFsdWUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV92YWx1ZSA+PiA0KSAv
IDI1NjsgfQogCi0gICAgZG91YmxlIHBlcmNlbnQoKSBjb25zdAorICAgIGZsb2F0IHBlcmNlbnQo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBQZXJjZW50KTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4ocmF3VmFsdWUoKSkgLyBwZXJjZW50U2NhbGVG
YWN0b3I7CisgICAgICAgIHJldHVybiByYXdWYWx1ZSgpOwogICAgIH0KIAogICAgIExlbmd0aFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExlbmd0aFR5cGU+KG1fdmFsdWUg
JiA3KTsgfQpAQCAtODMsMzAgKzg2LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZhbHVlKExl
bmd0aFR5cGUgdCwgaW50IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHQgIT0gUGVyY2Vu
dCk7Ci0gICAgICAgIHNldFJhd1ZhbHVlKHQsIHZhbHVlKTsKKyAgICAgICAgc2V0UmF3VmFsdWUo
dCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRSYXdW
YWx1ZShMZW5ndGhUeXBlIHQsIGludCB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWUgKiAxNiB8ICht
X3ZhbHVlICYgMHg4KSB8IHQ7IH0KKyAgICB2b2lkIHNldFJhd1ZhbHVlKExlbmd0aFR5cGUgdCwg
ZmxvYXQgdmFsdWUpIHsgbV92YWx1ZSA9IChzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogMjU2KSA8
PCA0KSB8IChzdGF0aWNfY2FzdDxpbnQ+KG1fdmFsdWUpICYgMHg4KSB8IHQ7IH0KIAotICAgIHZv
aWQgc2V0VmFsdWUoaW50IHZhbHVlKQorICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQgdmFsdWUpCiAg
ICAgewotICAgICAgICBBU1NFUlQoIXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKICAgICAg
ICAgc2V0UmF3VmFsdWUodmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoaW50
IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwgKG1fdmFsdWUgJiAweEYpOyB9Ci0KLSAg
ICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7Ci0gICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlICogcGVyY2VudFNjYWxlRmFjdG9yKSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwg
dDsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFZhbHVlKGRvdWJsZSB2YWx1ZSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCh0eXBlKCkgPT0gUGVyY2VudCk7Ci0gICAgICAgIG1fdmFsdWUgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHZhbHVlICogcGVyY2VudFNjYWxlRmFjdG9yKSAqIDE2IHwgKG1fdmFsdWUgJiAw
eEYpOwotICAgIH0KKyAgICB2b2lkIHNldFJhd1ZhbHVlKGZsb2F0IHZhbHVlKSB7IG1fdmFsdWUg
PSAoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAqIDI1NikgPDwgNCkgfCAobV92YWx1ZSAmIDB4Rik7
IH0KIAogICAgIC8vIG5vdGU6IHdvcmtzIG9ubHkgZm9yIGNlcnRhaW4gdHlwZXMsIHJldHVybnMg
dW5kZWZpbmVkTGVuZ3RoIG90aGVyd2lzZQogICAgIGludCBjYWxjVmFsdWUoaW50IG1heFZhbHVl
LCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkgY29uc3QKQEAgLTExNyw3ICsxMDcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICAgICAgaWYg
KHJvdW5kUGVyY2VudGFnZXMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjApKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWF4VmFsdWUgKiByYXdWYWx1ZSgpIC8gKDEwMCAqIHBlcmNlbnRTY2FsZUZh
Y3Rvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obWF4VmFsdWUg
KiByYXdWYWx1ZSgpIC8gMTAwICk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1heFZhbHVlOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTEzMywyMiAr
MTIzLDIyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKICAgICAgICAgICAg
ICAgICBpZiAocm91bmRQZXJjZW50YWdlcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4ocm91bmQobWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMCkpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBtYXhWYWx1ZSAqIHJhd1ZhbHVlKCkgLyAoMTAwICogcGVyY2Vu
dFNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Piht
YXhWYWx1ZSAqIHJhd1ZhbHVlKCkgLyAxMDApOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGZsb2F0IGNhbGNGbG9hdFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3QKKyAg
ICBmbG9hdCBjYWxjRmxvYXRWYWx1ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEZpeGVkOgotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUoKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZsb2F0VmFsdWUoKTsKICAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlICogcGVyY2VudCgp
IC8gMTAwLjApOworICAgICAgICAgICAgICAgIHJldHVybiBtYXhWYWx1ZSAqIHBlcmNlbnQoKSAv
IDEwMDsKICAgICAgICAgICAgIGNhc2UgQXV0bzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF4VmFs
dWU7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxmbG9hdD4odW5kZWZpbmVkTGVuZ3RoKTsKICAgICAgICAgfQpAQCAtMTg1LDggKzE3NSw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVBlcmNlbnQgKyAodG9Q
ZXJjZW50IC0gZnJvbVBlcmNlbnQpICogcHJvZ3Jlc3MsIFBlcmNlbnQpOwogICAgICAgICB9IAog
ICAgICAgICAgICAgCi0gICAgICAgIGludCBmcm9tVmFsdWUgPSBmcm9tLmlzWmVybygpID8gMCA6
IGZyb20udmFsdWUoKTsKLSAgICAgICAgaW50IHRvVmFsdWUgPSBpc1plcm8oKSA/IDAgOiB2YWx1
ZSgpOworICAgICAgICBkb3VibGUgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9t
LnZhbHVlKCk7CisgICAgICAgIGRvdWJsZSB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogdmFsdWUo
KTsKICAgICAgICAgcmV0dXJuIExlbmd0aChpbnQoZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9t
VmFsdWUpICogcHJvZ3Jlc3MpLCByZXN1bHRUeXBlKTsKICAgICB9CiAKQEAgLTE5Nyw2ICsxODcs
NyBAQCBwcml2YXRlOgogUGFzc093bkFycmF5UHRyPExlbmd0aD4gbmV3Q29vcmRzQXJyYXkoY29u
c3QgU3RyaW5nJiwgaW50JiBsZW4pOwogUGFzc093bkFycmF5UHRyPExlbmd0aD4gbmV3TGVuZ3Ro
QXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW4pOwogCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIExlbmd0aF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QXV0b1RhYmxlTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkocmV2aXNpb24gNzgwMTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDE4
ICsyMzAsMTggQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6OmNvbXB1dGVQcmVmZXJyZWRMbwogICAg
IGZsb2F0IG1heE5vblBlcmNlbnQgPSAwOwogICAgIGJvb2wgc2NhbGVDb2x1bW5zID0gc2hvdWxk
U2NhbGVDb2x1bW5zKG1fdGFibGUpOwogCi0gICAgLy8gV2Ugc3Vic3RpdHV0ZSAwIHBlcmNlbnQg
YnkgKGVwc2lsb24gLyBwZXJjZW50U2NhbGVGYWN0b3IpIHBlcmNlbnQgaW4gdHdvIHBsYWNlcyBi
ZWxvdyB0byBhdm9pZCBkaXZpc2lvbiBieSB6ZXJvLgorICAgIC8vIFdlIHN1YnN0aXR1dGUgMCBw
ZXJjZW50IGJ5IGVwc2lsb24gcGVyY2VudCBpbiB0d28gcGxhY2VzIGJlbG93IHRvIGF2b2lkIGRp
dmlzaW9uIGJ5IHplcm8uCiAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgMCUgY2FzZXMgcHJvcGVy
bHkuCi0gICAgY29uc3QgaW50IGVwc2lsb24gPSAxOworICAgIGNvbnN0IGZsb2F0IGVwc2lsb24g
PSAxOwogCi0gICAgaW50IHJlbWFpbmluZ1BlcmNlbnQgPSAxMDAgKiBwZXJjZW50U2NhbGVGYWN0
b3I7CisgICAgZmxvYXQgcmVtYWluaW5nUGVyY2VudCA9IDEwMDsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fbGF5b3V0U3RydWN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIG1pbldpZHRo
ICs9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aDsKICAgICAgICAg
bWF4V2lkdGggKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOwog
ICAgICAgICBpZiAoc2NhbGVDb2x1bW5zKSB7CiAgICAgICAgICAgICBpZiAobV9sYXlvdXRTdHJ1
Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaW50IHBlcmNlbnQgPSBtaW4obV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdp
ZHRoLnJhd1ZhbHVlKCksIHJlbWFpbmluZ1BlcmNlbnQpOwotICAgICAgICAgICAgICAgIGZsb2F0
IGxvZ2ljYWxXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX2xheW91dFN0cnVjdFtpXS5lZmZl
Y3RpdmVNYXhMb2dpY2FsV2lkdGgpICogMTAwICogcGVyY2VudFNjYWxlRmFjdG9yIC8gbWF4KHBl
cmNlbnQsIGVwc2lsb24pOworICAgICAgICAgICAgICAgIGZsb2F0IHBlcmNlbnQgPSBtaW4obV9s
YXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLmZsb2F0VmFsdWUoKSwgcmVtYWlu
aW5nUGVyY2VudCk7CisgICAgICAgICAgICAgICAgZmxvYXQgbG9naWNhbFdpZHRoID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aCkg
KiAxMDAgLyBtYXgocGVyY2VudCwgZXBzaWxvbik7CiAgICAgICAgICAgICAgICAgbWF4UGVyY2Vu
dCA9IG1heChsb2dpY2FsV2lkdGgsICBtYXhQZXJjZW50KTsKICAgICAgICAgICAgICAgICByZW1h
aW5pbmdQZXJjZW50IC09IHBlcmNlbnQ7CiAgICAgICAgICAgICB9IGVsc2UKQEAgLTI1MCw3ICsy
NTAsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6Y29tcHV0ZVByZWZlcnJlZExvCiAgICAgfQog
CiAgICAgaWYgKHNjYWxlQ29sdW1ucykgewotICAgICAgICBtYXhOb25QZXJjZW50ID0gbWF4Tm9u
UGVyY2VudCAqIDEwMCAqIHBlcmNlbnRTY2FsZUZhY3RvciAvIG1heChyZW1haW5pbmdQZXJjZW50
LCBlcHNpbG9uKTsKKyAgICAgICAgbWF4Tm9uUGVyY2VudCA9IG1heE5vblBlcmNlbnQgKiAxMDAg
LyBtYXgocmVtYWluaW5nUGVyY2VudCwgZXBzaWxvbik7CiAgICAgICAgIG1heFdpZHRoID0gbWF4
KG1heFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KG1pbihtYXhOb25QZXJjZW50LCBJTlRfTUFYIC8g
Mi4wZikpKTsKICAgICAgICAgbWF4V2lkdGggPSBtYXgobWF4V2lkdGgsIHN0YXRpY19jYXN0PGlu
dD4obWluKG1heFBlcmNlbnQsIElOVF9NQVggLyAyLjBmKSkpOwogICAgIH0KQEAgLTM1OCw3ICsz
NTgsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhCiAgICAgICAg
ICAgICAgICAgLy8gY2FuJ3Qgc2F0aWZ5IHRoaXMgY29uZGl0aW9uLCB0cmVhdCBhcyB2YXJpYWJs
ZQogICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGggPSBMZW5ndGgoKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gbWF4KG1heExv
Z2ljYWxXaWR0aCwgbWF4KHNwYW5NYXhMb2dpY2FsV2lkdGgsIGNlbGxNYXhMb2dpY2FsV2lkdGgp
ICogMTAwICogcGVyY2VudFNjYWxlRmFjdG9yIC8gY2VsbExvZ2ljYWxXaWR0aC5yYXdWYWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBtYXgobWF4TG9naWNhbFdpZHRo
LCBtYXgoc3Bhbk1heExvZ2ljYWxXaWR0aCwgY2VsbE1heExvZ2ljYWxXaWR0aCkgKiAxMDAgLyBj
ZWxsTG9naWNhbFdpZHRoLnJhd1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gYWxsIG5v
biBwZXJjZW50IGNvbHVtbnMgaW4gdGhlIHNwYW4gZ2V0IHBlcmNlbnQgdmFsdWVzIHRvIHN1bSB1
cCBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgaW50IHBlcmNlbnRNaXNzaW5nID0gY2VsbExv
Z2ljYWxXaWR0aC5yYXdWYWx1ZSgpIC0gdG90YWxQZXJjZW50OwpAQCAtNTM5LDkgKzUzOSw5IEBA
IHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAgICAgICAgICAgICAgIG1fbGF5b3V0
U3RydWN0W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAodG90YWxQZXJjZW50ID4gMTAwICogcGVy
Y2VudFNjYWxlRmFjdG9yKSB7CisgICAgICAgIGlmICh0b3RhbFBlcmNlbnQgPiAxMDAgKSB7CiAg
ICAgICAgICAgICAvLyByZW1vdmUgb3ZlcmFsbG9jYXRlZCBzcGFjZSBmcm9tIHRoZSBsYXN0IGNv
bHVtbnMKLSAgICAgICAgICAgIGludCBleGNlc3MgPSB0YWJsZUxvZ2ljYWxXaWR0aCAqICh0b3Rh
bFBlcmNlbnQgLSAxMDAgKiBwZXJjZW50U2NhbGVGYWN0b3IpIC8gKDEwMCAqIHBlcmNlbnRTY2Fs
ZUZhY3Rvcik7CisgICAgICAgICAgICBpbnQgZXhjZXNzID0gdGFibGVMb2dpY2FsV2lkdGggKiAo
dG90YWxQZXJjZW50IC0gMTAwICkgLyAxMDA7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gbkVm
ZkNvbHMgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICAgICAgICAgIGlmIChtX2xheW91dFN0
cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguaXNQZXJjZW50KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVjdFtpXS5jb21wdXRl
ZExvZ2ljYWxXaWR0aDsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6
bGF5b3V0KCkKICAgICB9CiAKICAgICAvLyBzcHJlYWQgb3ZlciBwZXJjZW50IGNvbHVtcwotICAg
IGlmIChhdmFpbGFibGUgPiAwICYmIG1faGFzUGVyY2VudCAmJiB0b3RhbFBlcmNlbnQgPCAxMDAg
KiBwZXJjZW50U2NhbGVGYWN0b3IpIHsKKyAgICBpZiAoYXZhaWxhYmxlID4gMCAmJiBtX2hhc1Bl
cmNlbnQgJiYgdG90YWxQZXJjZW50IDwgMTAwICkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5FZmZDb2xzOyArK2kpIHsKICAgICAgICAgICAgIExlbmd0aCYgbG9naWNhbFdpZHRo
ID0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoOwogICAgICAgICAgICAg
aWYgKGxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDc4MDEwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyNywyOSArNDI3LDI5IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91
dFJvd3MoaW50IHQKICAgICBpZiAodG9BZGQgJiYgdG90YWxSb3dzICYmIChtX3Jvd1Bvc1t0b3Rh
bFJvd3NdIHx8ICFuZXh0U2libGluZygpKSkgewogICAgICAgICBpbnQgdG90YWxIZWlnaHQgPSBt
X3Jvd1Bvc1t0b3RhbFJvd3NdICsgdG9BZGQ7CiAKLSAgICAgICAgaW50IGRoID0gdG9BZGQ7Ci0g
ICAgICAgIGludCB0b3RhbFBlcmNlbnQgPSAwOworICAgICAgICBmbG9hdCBkaCA9IHRvQWRkOwor
ICAgICAgICBmbG9hdCB0b3RhbFBlcmNlbnQgPSAwOwogICAgICAgICBpbnQgbnVtQXV0byA9IDA7
CiAgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAg
ICAgIGlmIChtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5pc0F1dG8oKSkKICAgICAgICAgICAgICAg
ICBudW1BdXRvKys7CiAgICAgICAgICAgICBlbHNlIGlmIChtX2dyaWRbcl0ubG9naWNhbEhlaWdo
dC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnQgKz0gbV9ncmlkW3Jd
LmxvZ2ljYWxIZWlnaHQucmF3VmFsdWUoKTsKKyAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnQg
Kz0gbV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQuZmxvYXRWYWx1ZSgpOwogICAgICAgICB9CiAgICAg
ICAgIGlmICh0b3RhbFBlcmNlbnQpIHsKICAgICAgICAgICAgIC8vIHRyeSB0byBzYXRpc2Z5IHBl
cmNlbnQKICAgICAgICAgICAgIGludCBhZGQgPSAwOwotICAgICAgICAgICAgdG90YWxQZXJjZW50
ID0gbWluKHRvdGFsUGVyY2VudCwgMTAwICogcGVyY2VudFNjYWxlRmFjdG9yKTsKKyAgICAgICAg
ICAgIHRvdGFsUGVyY2VudCA9IG1pbih0b3RhbFBlcmNlbnQsIDEwMC4wZik7CiAgICAgICAgICAg
ICBpbnQgcmggPSBtX3Jvd1Bvc1sxXSAtIG1fcm93UG9zWzBdOwogICAgICAgICAgICAgZm9yIChp
bnQgciA9IDA7IHIgPCB0b3RhbFJvd3M7IHIrKykgewogICAgICAgICAgICAgICAgIGlmICh0b3Rh
bFBlcmNlbnQgPiAwICYmIG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LmlzUGVyY2VudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGludCB0b0FkZCA9IG1pbihkaCwgKHRvdGFsSGVpZ2h0ICogbV9n
cmlkW3JdLmxvZ2ljYWxIZWlnaHQucmF3VmFsdWUoKSAvICgxMDAgKiBwZXJjZW50U2NhbGVGYWN0
b3IpKSAtIHJoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHRvQWRkID0gbWluKGRoLCAodG90
YWxIZWlnaHQgKiBtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5mbG9hdFZhbHVlKCkgLyAxMDApIC0g
cmgpOwogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0b0FkZCBpcyBuZWdhdGl2ZSwgdGhlbiB3
ZSBkb24ndCB3YW50IHRvIHNocmluayB0aGUgcm93ICh0aGlzIGJ1ZwogICAgICAgICAgICAgICAg
ICAgICAvLyBhZmZlY3RlZCBPdXRsb29rIFdlYiBBY2Nlc3MpLgogICAgICAgICAgICAgICAgICAg
ICB0b0FkZCA9IG1heCgwLCB0b0FkZCk7CiAgICAgICAgICAgICAgICAgICAgIGFkZCArPSB0b0Fk
ZDsKICAgICAgICAgICAgICAgICAgICAgZGggLT0gdG9BZGQ7Ci0gICAgICAgICAgICAgICAgICAg
IHRvdGFsUGVyY2VudCAtPSBtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5yYXdWYWx1ZSgpOworICAg
ICAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnQgLT0gbV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQu
ZmxvYXRWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAociA8
IHRvdGFsUm93cyAtIDEpCiAgICAgICAgICAgICAgICAgICAgIHJoID0gbV9yb3dQb3NbciArIDJd
IC0gbV9yb3dQb3NbciArIDFdOwo=
</data>
<flag name="review"
          id="73348"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>82556</attachid>
            <date>2011-02-15 17:41:27 -0800</date>
            <delta_ts>2011-02-15 17:43:10 -0800</delta_ts>
            <desc>Working patch with fixes for 2 layout tests</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9760</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDItMTUgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorCQlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3IhPSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OnJhd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnF1aXJrKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6c2V0UmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpz
ZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorCiAyMDExLTAyLTEwICBKZXJl
bXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5h
dGUgQ2hhcGluLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
cmV2aXNpb24gNzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyODEsNyArMzI4MSw3IEBAIHN0YXRpYyBMZW5ndGggY29u
dmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICAgICAgICAgIGlmIChvaykKICAgICAgICAgICAg
ICAgICAqb2sgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6
aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlw
bGllciksIEZpeGVkKTsKKyAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsK
ICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpCiAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpLCBQZXJjZW50KTsKICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCShyZXZpc2lvbiA3
ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwzNiArNDAsNDIgQEAgc3RydWN0IExlbmd0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGVuZ3RoKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCisg
ICAgICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90eXBlKEF1dG8pLCBtX2lzRmxv
YXQoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKExlbmd0aFR5cGUgdCkKLSAgICAgICAg
OiBtX3ZhbHVlKHQpCisgICAgICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90eXBl
KHQpLCBtX2lzRmxvYXQoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKGludCB2LCBMZW5n
dGhUeXBlIHQsIGJvb2wgcSA9IGZhbHNlKQotICAgICAgICA6IG1fdmFsdWUoKHYgKiAxNikgfCAo
cSA8PCAzKSB8IHQpIC8vIEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYgdGhlIHBhc3NlZC1pbiB2YWx1
ZSBpcyB2ZXJ5IGxhcmdlIQorICAgICAgICA6IG1faW50VmFsdWUodiksIG1fcXVpcmsocSksIG1f
dHlwZSh0KSwgbV9pc0Zsb2F0KDApCiAgICAgewogICAgICAgICBBU1NFUlQodCAhPSBQZXJjZW50
KTsKICAgICB9CiAKICAgICBMZW5ndGgoZG91YmxlIHYsIExlbmd0aFR5cGUgdCwgYm9vbCBxID0g
ZmFsc2UpCi0gICAgICAgIDogbV92YWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHYgKiBwZXJjZW50U2Nh
bGVGYWN0b3IpICogMTYgfCAocSA8PCAzKSB8IHQpCisgICAgICAgIDogbV9xdWlyayhxKSwgbV90
eXBlKHQpLCBtX2lzRmxvYXQoMCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ID09IFBlcmNlbnQp
OworICAgICAgICBpZihtX3R5cGU9PVBlcmNlbnQpCisgICAgICAgICAgICBtX2ludFZhbHVlID0g
c3RhdGljX2Nhc3Q8aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rvcik7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgbV9pc0Zsb2F0ID0gMTsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZmxv
YXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAgICAgICAgfQogICAgIH0KKyAgICAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0
RmxvYXRWYWx1ZSgpID09IG8uZ2V0RmxvYXRWYWx1ZSgpKSYmKG1fdHlwZSA9PSBvLm1fdHlwZSkm
JihtX3F1aXJrID09IG8ubV9xdWlyayk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVu
Z3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0RmxvYXRWYWx1ZSgpICE9IG8uZ2V0RmxvYXRWYWx1
ZSgpKXx8KG1fdHlwZSAhPSBvLm1fdHlwZSl8fChtX3F1aXJrICE9IG8ubV9xdWlyayk7IH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUgPT0gby5tX3ZhbHVlOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgbykg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZSAhPSBvLm1fdmFsdWU7IH0KLQorICAgIAogICAgIGludCB2
YWx1ZSgpIGNvbnN0IHsKICAgICAgICAgQVNTRVJUKHR5cGUoKSAhPSBQZXJjZW50KTsKICAgICAg
ICAgcmV0dXJuIHJhd1ZhbHVlKCk7CiAgICAgfQogCi0gICAgaW50IHJhd1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gKG1fdmFsdWUgJiB+MHhGKSAvIDE2OyB9CisgICAgaW50IHJhd1ZhbHVlKCkgY29u
c3QgeyByZXR1cm4gZ2V0SW50VmFsdWUoKTsgfQogCiAgICAgZG91YmxlIHBlcmNlbnQoKSBjb25z
dAogICAgIHsKQEAgLTc3LDggKzgzLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihyYXdWYWx1ZSgpKSAvIHBlcmNlbnRTY2FsZUZhY3RvcjsKICAgICB9CiAK
LSAgICBMZW5ndGhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhU
eXBlPihtX3ZhbHVlICYgNyk7IH0KLSAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gKG1f
dmFsdWUgPj4gMykgJiAxOyB9CisgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQorICAgIGJvb2wgcXVpcmsoKSBjb25z
dCB7IHJldHVybiBtX3F1aXJrOyB9CiAKICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwg
aW50IHZhbHVlKQogICAgIHsKQEAgLTg2LDcgKzkyLDcgQEAgcHVibGljOgogICAgICAgICBzZXRS
YXdWYWx1ZSh0LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRSYXdWYWx1ZShMZW5ndGhU
eXBlIHQsIGludCB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWUgKiAxNiB8IChtX3ZhbHVlICYgMHg4
KSB8IHQ7IH0KKyAgICB2b2lkIHNldFJhd1ZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7
ICp0aGlzID0gTGVuZ3RoKHZhbHVlLCB0KTsgfQogCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFs
dWUpCiAgICAgewpAQCAtOTQsMTggKzEwMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHNldFJhd1Zh
bHVlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJhd1ZhbHVlKGludCB2YWx1ZSkgeyBt
X3ZhbHVlID0gdmFsdWUgKiAxNiB8IChtX3ZhbHVlICYgMHhGKTsgfQorICAgIHZvaWQgc2V0UmF3
VmFsdWUoaW50IHZhbHVlKSB7ICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7IH0KIAogICAg
IHZvaWQgc2V0VmFsdWUoTGVuZ3RoVHlwZSB0LCBkb3VibGUgdmFsdWUpCiAgICAgewotICAgICAg
ICBBU1NFUlQodCA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PGlu
dD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAobV92YWx1ZSAmIDB4OCkgfCB0
OworICAgICAgICAqdGhpcyA9IExlbmd0aCh2YWx1ZSwgdCk7CiAgICAgfQogCiAgICAgdm9pZCBz
ZXRWYWx1ZShkb3VibGUgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQodHlwZSgpID09IFBl
cmNlbnQpOwotICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAqIHBlcmNl
bnRTY2FsZUZhY3RvcikgKiAxNiB8IChtX3ZhbHVlICYgMHhGKTsKKyAgICAgICAgKnRoaXMgPSBM
ZW5ndGgodmFsdWUsIEZpeGVkKTsKICAgICB9CiAKICAgICAvLyBub3RlOiB3b3JrcyBvbmx5IGZv
ciBjZXJ0YWluIHR5cGVzLCByZXR1cm5zIHVuZGVmaW5lZExlbmd0aCBvdGhlcndpc2UKQEAgLTE0
NCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewog
ICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZhbHVlKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVl
KCk7CiAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wKTsKICAgICAgICAg
ICAgIGNhc2UgQXV0bzoKQEAgLTE1NSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ym9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPT0gdW5kZWZpbmVk
TGVuZ3RoOyB9Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhKG1fdmFsdWUgJiB+
MHhGKTsgfQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIWdldEludFZhbHVlKCk7
IH0KICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgpID4gMDsg
fQogICAgIGJvb2wgaXNOZWdhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPCAwOyB9
CiAKQEAgLTE4NSwxMyArMTg5LDMzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBMZW5n
dGgoZnJvbVBlcmNlbnQgKyAodG9QZXJjZW50IC0gZnJvbVBlcmNlbnQpICogcHJvZ3Jlc3MsIFBl
cmNlbnQpOwogICAgICAgICB9IAogICAgICAgICAgICAgCi0gICAgICAgIGludCBmcm9tVmFsdWUg
PSBmcm9tLmlzWmVybygpID8gMCA6IGZyb20udmFsdWUoKTsKLSAgICAgICAgaW50IHRvVmFsdWUg
PSBpc1plcm8oKSA/IDAgOiB2YWx1ZSgpOwotICAgICAgICByZXR1cm4gTGVuZ3RoKGludChmcm9t
VmFsdWUgKyAodG9WYWx1ZSAtIGZyb21WYWx1ZSkgKiBwcm9ncmVzcyksIHJlc3VsdFR5cGUpOwor
ICAgICAgICBkb3VibGUgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLmdldEZs
b2F0VmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHRvVmFsdWUgPSBpc1plcm8oKSA/IDAgOiBnZXRG
bG9hdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVZhbHVlICsgKHRvVmFsdWUg
LSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MsIHJlc3VsdFR5cGUpOwogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBpbnQgbV92YWx1ZTsKKyAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYobV9pc0Zsb2F0KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
bV9mbG9hdFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1faW50VmFsdWU7CisgICAgfQorICAgIAor
ICAgIGZsb2F0IGdldEZsb2F0VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYobV9pc0Zs
b2F0KQorICAgICAgICAgICAgcmV0dXJuIG1fZmxvYXRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIG1f
aW50VmFsdWU7CisgICAgfQorICAgIAorICAgIHVuaW9uIHsKKyAgICAgICAgaW50IG1faW50VmFs
dWU7CisgICAgICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKKyAgICB9OworICAgIHVuc2lnbmVkIGNo
YXIgbV9xdWlyayAgIDogMTsKKyAgICB1bnNpZ25lZCBjaGFyIG1fdHlwZSAgICA6IDM7CisgICAg
dW5zaWduZWQgY2hhciBtX2lzRmxvYXQgOiAxOwogfTsKIAogUGFzc093bkFycmF5UHRyPExlbmd0
aD4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW4pOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNzg2NTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0wMi0xNSAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCB0aGF0IGFsbG93cyBmaXhlZCBsZW5ndGggdmFsdWVzIHRvIGJlIGZsb2F0aW5nIHBvaW50CisJ
CWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY5OQorCQkKKwkJQmVj
YXVzZSB0cmFuc2l0aW9ucyByZXR1cm5zIG1hdHJpY2VzIGluIGZsb2F0aW5nIHBvaW50LCAyIG9m
IHRoZSB0cmFuc2l0aW9uIHRlc3RzIHdlcmUgZmFpbGluZworCQliZWNhdXNlIHRoZXkgZXhwZWN0
ZWQgaW50ZWdlciB2YWx1ZXMuCisJCQorICAgICAgICAqIHRyYW5zaXRpb25zL21hdGNoZWQtdHJh
bnNmb3JtLWZ1bmN0aW9ucy5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3JldGFyZ2V0dGVk
LXRyYW5zaXRpb24uaHRtbDoKKwogMjAxMS0wMi0xMCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KSW5kZXg6IExh
eW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1
bmN0aW9ucy5odG1sCShyZXZpc2lvbiA3ODU4NikKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25z
L21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
MiArMjQsOSBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgdmFyIHQgPSB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndl
YmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgbWF0
cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAgICB2YXIgeVRy
YW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotICAgICAgCi0gICAgICB2
YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRp
b24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworCSAgdmFyIGMgPSBuZXcg
V2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsgICAgICAKKyAgICAgIHZhciByZXN1bHQg
PSAoYy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBi
ZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVk
LXRyYW5zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9y
ZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHJldmlzaW9uIDc4NTg2KQorKysgTGF5b3V0VGVz
dHMvdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywxMiArMjMsOCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAg
dmFyIHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ym94JykpLndlYmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJv
bSB0aGUgbWF0cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAg
ICB2YXIgeVRyYW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotCi0gICAg
ICB2YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5z
aXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworICAgICAgdmFyIGMg
PSBuZXcgV2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsKKyAgICAgIHZhciByZXN1bHQg
PSAoYy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBi
ZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAKICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82558</attachid>
            <date>2011-02-15 17:43:10 -0800</date>
            <delta_ts>2011-02-18 15:51:59 -0800</delta_ts>
            <desc>Working patch with fixes for 2 layout tests</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9760</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDItMTUgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorCQlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3IhPSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OnJhd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnF1aXJrKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6c2V0UmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpz
ZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorCiAyMDExLTAyLTEwICBKZXJl
bXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5h
dGUgQ2hhcGluLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
cmV2aXNpb24gNzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyODEsNyArMzI4MSw3IEBAIHN0YXRpYyBMZW5ndGggY29u
dmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICAgICAgICAgIGlmIChvaykKICAgICAgICAgICAg
ICAgICAqb2sgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6
aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlw
bGllciksIEZpeGVkKTsKKyAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsK
ICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpCiAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpLCBQZXJjZW50KTsKICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCShyZXZpc2lvbiA3
ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwzNiArNDAsNDIgQEAgc3RydWN0IExlbmd0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGVuZ3RoKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCisg
ICAgICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90eXBlKEF1dG8pLCBtX2lzRmxv
YXQoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKExlbmd0aFR5cGUgdCkKLSAgICAgICAg
OiBtX3ZhbHVlKHQpCisgICAgICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90eXBl
KHQpLCBtX2lzRmxvYXQoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKGludCB2LCBMZW5n
dGhUeXBlIHQsIGJvb2wgcSA9IGZhbHNlKQotICAgICAgICA6IG1fdmFsdWUoKHYgKiAxNikgfCAo
cSA8PCAzKSB8IHQpIC8vIEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYgdGhlIHBhc3NlZC1pbiB2YWx1
ZSBpcyB2ZXJ5IGxhcmdlIQorICAgICAgICA6IG1faW50VmFsdWUodiksIG1fcXVpcmsocSksIG1f
dHlwZSh0KSwgbV9pc0Zsb2F0KDApCiAgICAgewogICAgICAgICBBU1NFUlQodCAhPSBQZXJjZW50
KTsKICAgICB9CiAKICAgICBMZW5ndGgoZG91YmxlIHYsIExlbmd0aFR5cGUgdCwgYm9vbCBxID0g
ZmFsc2UpCi0gICAgICAgIDogbV92YWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHYgKiBwZXJjZW50U2Nh
bGVGYWN0b3IpICogMTYgfCAocSA8PCAzKSB8IHQpCisgICAgICAgIDogbV9xdWlyayhxKSwgbV90
eXBlKHQpLCBtX2lzRmxvYXQoMCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ID09IFBlcmNlbnQp
OworICAgICAgICBpZihtX3R5cGU9PVBlcmNlbnQpCisgICAgICAgICAgICBtX2ludFZhbHVlID0g
c3RhdGljX2Nhc3Q8aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rvcik7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgbV9pc0Zsb2F0ID0gMTsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZmxv
YXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAgICAgICAgfQogICAgIH0KKyAgICAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0
RmxvYXRWYWx1ZSgpID09IG8uZ2V0RmxvYXRWYWx1ZSgpKSYmKG1fdHlwZSA9PSBvLm1fdHlwZSkm
JihtX3F1aXJrID09IG8ubV9xdWlyayk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVu
Z3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0RmxvYXRWYWx1ZSgpICE9IG8uZ2V0RmxvYXRWYWx1
ZSgpKXx8KG1fdHlwZSAhPSBvLm1fdHlwZSl8fChtX3F1aXJrICE9IG8ubV9xdWlyayk7IH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUgPT0gby5tX3ZhbHVlOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgbykg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZSAhPSBvLm1fdmFsdWU7IH0KLQorICAgIAogICAgIGludCB2
YWx1ZSgpIGNvbnN0IHsKICAgICAgICAgQVNTRVJUKHR5cGUoKSAhPSBQZXJjZW50KTsKICAgICAg
ICAgcmV0dXJuIHJhd1ZhbHVlKCk7CiAgICAgfQogCi0gICAgaW50IHJhd1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gKG1fdmFsdWUgJiB+MHhGKSAvIDE2OyB9CisgICAgaW50IHJhd1ZhbHVlKCkgY29u
c3QgeyByZXR1cm4gZ2V0SW50VmFsdWUoKTsgfQogCiAgICAgZG91YmxlIHBlcmNlbnQoKSBjb25z
dAogICAgIHsKQEAgLTc3LDggKzgzLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihyYXdWYWx1ZSgpKSAvIHBlcmNlbnRTY2FsZUZhY3RvcjsKICAgICB9CiAK
LSAgICBMZW5ndGhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhU
eXBlPihtX3ZhbHVlICYgNyk7IH0KLSAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gKG1f
dmFsdWUgPj4gMykgJiAxOyB9CisgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQorICAgIGJvb2wgcXVpcmsoKSBjb25z
dCB7IHJldHVybiBtX3F1aXJrOyB9CiAKICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwg
aW50IHZhbHVlKQogICAgIHsKQEAgLTg2LDcgKzkyLDcgQEAgcHVibGljOgogICAgICAgICBzZXRS
YXdWYWx1ZSh0LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRSYXdWYWx1ZShMZW5ndGhU
eXBlIHQsIGludCB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWUgKiAxNiB8IChtX3ZhbHVlICYgMHg4
KSB8IHQ7IH0KKyAgICB2b2lkIHNldFJhd1ZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7
ICp0aGlzID0gTGVuZ3RoKHZhbHVlLCB0KTsgfQogCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFs
dWUpCiAgICAgewpAQCAtOTQsMTggKzEwMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHNldFJhd1Zh
bHVlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJhd1ZhbHVlKGludCB2YWx1ZSkgeyBt
X3ZhbHVlID0gdmFsdWUgKiAxNiB8IChtX3ZhbHVlICYgMHhGKTsgfQorICAgIHZvaWQgc2V0UmF3
VmFsdWUoaW50IHZhbHVlKSB7ICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7IH0KIAogICAg
IHZvaWQgc2V0VmFsdWUoTGVuZ3RoVHlwZSB0LCBkb3VibGUgdmFsdWUpCiAgICAgewotICAgICAg
ICBBU1NFUlQodCA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PGlu
dD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAobV92YWx1ZSAmIDB4OCkgfCB0
OworICAgICAgICAqdGhpcyA9IExlbmd0aCh2YWx1ZSwgdCk7CiAgICAgfQogCiAgICAgdm9pZCBz
ZXRWYWx1ZShkb3VibGUgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQodHlwZSgpID09IFBl
cmNlbnQpOwotICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAqIHBlcmNl
bnRTY2FsZUZhY3RvcikgKiAxNiB8IChtX3ZhbHVlICYgMHhGKTsKKyAgICAgICAgKnRoaXMgPSBM
ZW5ndGgodmFsdWUsIEZpeGVkKTsKICAgICB9CiAKICAgICAvLyBub3RlOiB3b3JrcyBvbmx5IGZv
ciBjZXJ0YWluIHR5cGVzLCByZXR1cm5zIHVuZGVmaW5lZExlbmd0aCBvdGhlcndpc2UKQEAgLTE0
NCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewog
ICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZhbHVlKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVl
KCk7CiAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wKTsKICAgICAgICAg
ICAgIGNhc2UgQXV0bzoKQEAgLTE1NSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ym9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPT0gdW5kZWZpbmVk
TGVuZ3RoOyB9Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhKG1fdmFsdWUgJiB+
MHhGKTsgfQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIWdldEludFZhbHVlKCk7
IH0KICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgpID4gMDsg
fQogICAgIGJvb2wgaXNOZWdhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPCAwOyB9
CiAKQEAgLTE4NSwxMyArMTg5LDMzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBMZW5n
dGgoZnJvbVBlcmNlbnQgKyAodG9QZXJjZW50IC0gZnJvbVBlcmNlbnQpICogcHJvZ3Jlc3MsIFBl
cmNlbnQpOwogICAgICAgICB9IAogICAgICAgICAgICAgCi0gICAgICAgIGludCBmcm9tVmFsdWUg
PSBmcm9tLmlzWmVybygpID8gMCA6IGZyb20udmFsdWUoKTsKLSAgICAgICAgaW50IHRvVmFsdWUg
PSBpc1plcm8oKSA/IDAgOiB2YWx1ZSgpOwotICAgICAgICByZXR1cm4gTGVuZ3RoKGludChmcm9t
VmFsdWUgKyAodG9WYWx1ZSAtIGZyb21WYWx1ZSkgKiBwcm9ncmVzcyksIHJlc3VsdFR5cGUpOwor
ICAgICAgICBkb3VibGUgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLmdldEZs
b2F0VmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHRvVmFsdWUgPSBpc1plcm8oKSA/IDAgOiBnZXRG
bG9hdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVZhbHVlICsgKHRvVmFsdWUg
LSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MsIHJlc3VsdFR5cGUpOwogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBpbnQgbV92YWx1ZTsKKyAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYobV9pc0Zsb2F0KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
bV9mbG9hdFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1faW50VmFsdWU7CisgICAgfQorICAgIAor
ICAgIGZsb2F0IGdldEZsb2F0VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYobV9pc0Zs
b2F0KQorICAgICAgICAgICAgcmV0dXJuIG1fZmxvYXRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIG1f
aW50VmFsdWU7CisgICAgfQorICAgIAorICAgIHVuaW9uIHsKKyAgICAgICAgaW50IG1faW50VmFs
dWU7CisgICAgICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKKyAgICB9OworICAgIHVuc2lnbmVkIGNo
YXIgbV9xdWlyayAgIDogMTsKKyAgICB1bnNpZ25lZCBjaGFyIG1fdHlwZSAgICA6IDM7CisgICAg
dW5zaWduZWQgY2hhciBtX2lzRmxvYXQgOiAxOwogfTsKIAogUGFzc093bkFycmF5UHRyPExlbmd0
aD4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW4pOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNzg2NTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0wMi0xNSAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCB0aGF0IGFsbG93cyBmaXhlZCBsZW5ndGggdmFsdWVzIHRvIGJlIGZsb2F0aW5nIHBvaW50CisJ
CWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY5OQorCQkKKwkJQmVj
YXVzZSB0cmFuc2l0aW9ucyByZXR1cm5zIG1hdHJpY2VzIGluIGZsb2F0aW5nIHBvaW50LCAyIG9m
IHRoZSB0cmFuc2l0aW9uIHRlc3RzIHdlcmUgZmFpbGluZworCQliZWNhdXNlIHRoZXkgZXhwZWN0
ZWQgaW50ZWdlciB2YWx1ZXMuCisJCQorICAgICAgICAqIHRyYW5zaXRpb25zL21hdGNoZWQtdHJh
bnNmb3JtLWZ1bmN0aW9ucy5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3JldGFyZ2V0dGVk
LXRyYW5zaXRpb24uaHRtbDoKKwogMjAxMS0wMi0xMCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KSW5kZXg6IExh
eW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1
bmN0aW9ucy5odG1sCShyZXZpc2lvbiA3ODU4NikKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25z
L21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
MiArMjQsOSBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgdmFyIHQgPSB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndl
YmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgbWF0
cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAgICB2YXIgeVRy
YW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotICAgICAgCi0gICAgICB2
YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRp
b24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworCSAgdmFyIGMgPSBuZXcg
V2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsgICAgICAKKyAgICAgIHZhciByZXN1bHQg
PSAoYy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBi
ZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVk
LXRyYW5zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9y
ZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHJldmlzaW9uIDc4NTg2KQorKysgTGF5b3V0VGVz
dHMvdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywxMiArMjMsOCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAg
dmFyIHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ym94JykpLndlYmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJv
bSB0aGUgbWF0cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAg
ICB2YXIgeVRyYW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotCi0gICAg
ICB2YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5z
aXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworICAgICAgdmFyIGMg
PSBuZXcgV2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsKKyAgICAgIHZhciByZXN1bHQg
PSAoYy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBi
ZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAKICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83031</attachid>
            <date>2011-02-18 15:51:59 -0800</date>
            <delta_ts>2011-02-23 16:20:29 -0800</delta_ts>
            <desc>new patch that fixes the style + removes setRawValue calls</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12826</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDQxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDItMTggIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVu
Z3RoOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3IhPSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnJhd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnF1aXJrKToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
OjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzWmVybyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6Z2V0SW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRGbG9hdFZhbHVl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRU
YWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkpOgorCiAyMDExLTAyLTE4ICBKYW1lcyBSb2JpbnNv
biAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
dXNzZWxsLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2
aXNpb24gNzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyODEsNyArMzI4MSw3IEBAIHN0YXRpYyBMZW5ndGggY29udmVy
dFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICAgICAgICAgIGlmIChvaykKICAgICAgICAgICAgICAg
ICAqb2sgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNV
bml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGll
ciksIEZpeGVkKTsKKyAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKICAg
ICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
CiAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCShyZXZpc2lvbiA3ODU4
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwzNiArNDAsNDIgQEAgc3RydWN0IExlbmd0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTGVuZ3RoKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCisgICAg
ICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90eXBlKEF1dG8pLCBtX2lzRmxvYXQo
MCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKExlbmd0aFR5cGUgdCkKLSAgICAgICAgOiBt
X3ZhbHVlKHQpCisgICAgICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90eXBlKHQp
LCBtX2lzRmxvYXQoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKGludCB2LCBMZW5ndGhU
eXBlIHQsIGJvb2wgcSA9IGZhbHNlKQotICAgICAgICA6IG1fdmFsdWUoKHYgKiAxNikgfCAocSA8
PCAzKSB8IHQpIC8vIEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYgdGhlIHBhc3NlZC1pbiB2YWx1ZSBp
cyB2ZXJ5IGxhcmdlIQorICAgICAgICA6IG1faW50VmFsdWUodiksIG1fcXVpcmsocSksIG1fdHlw
ZSh0KSwgbV9pc0Zsb2F0KDApCiAgICAgewogICAgICAgICBBU1NFUlQodCAhPSBQZXJjZW50KTsK
ICAgICB9CiAKICAgICBMZW5ndGgoZG91YmxlIHYsIExlbmd0aFR5cGUgdCwgYm9vbCBxID0gZmFs
c2UpCi0gICAgICAgIDogbV92YWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHYgKiBwZXJjZW50U2NhbGVG
YWN0b3IpICogMTYgfCAocSA8PCAzKSB8IHQpCisgICAgICAgIDogbV9xdWlyayhxKSwgbV90eXBl
KHQpLCBtX2lzRmxvYXQoMCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ID09IFBlcmNlbnQpOwor
ICAgICAgICBpZiAobV90eXBlID09IFBlcmNlbnQpCisgICAgICAgICAgICBtX2ludFZhbHVlID0g
c3RhdGljX2Nhc3Q8aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rvcik7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgbV9pc0Zsb2F0ID0gMTsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZmxv
YXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAgICAgICAgfQogICAgIH0KKyAgICAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0
RmxvYXRWYWx1ZSgpID09IG8uZ2V0RmxvYXRWYWx1ZSgpKSAmJiAobV90eXBlID09IG8ubV90eXBl
KSAmJiAobV9xdWlyayA9PSBvLm1fcXVpcmspOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gKGdldEZsb2F0VmFsdWUoKSAhPSBvLmdldEZsb2F0
VmFsdWUoKSkgfHwgKG1fdHlwZSAhPSBvLm1fdHlwZSkgfHwgKG1fcXVpcmsgIT0gby5tX3F1aXJr
KTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSA9PSBvLm1fdmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVu
Z3RoJiBvKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICE9IG8ubV92YWx1ZTsgfQotCisgICAgCiAg
ICAgaW50IHZhbHVlKCkgY29uc3QgewogICAgICAgICBBU1NFUlQodHlwZSgpICE9IFBlcmNlbnQp
OwogICAgICAgICByZXR1cm4gcmF3VmFsdWUoKTsKICAgICB9CiAKLSAgICBpbnQgcmF3VmFsdWUo
KSBjb25zdCB7IHJldHVybiAobV92YWx1ZSAmIH4weEYpIC8gMTY7IH0KKyAgICBpbnQgcmF3VmFs
dWUoKSBjb25zdCB7IHJldHVybiBnZXRJbnRWYWx1ZSgpOyB9CiAKICAgICBkb3VibGUgcGVyY2Vu
dCgpIGNvbnN0CiAgICAgewpAQCAtNzcsMzUgKzgzLDI5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4ocmF3VmFsdWUoKSkgLyBwZXJjZW50U2NhbGVGYWN0b3I7
CiAgICAgfQogCi0gICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TGVuZ3RoVHlwZT4obV92YWx1ZSAmIDcpOyB9Ci0gICAgYm9vbCBxdWlyaygpIGNvbnN0IHsg
cmV0dXJuIChtX3ZhbHVlID4+IDMpICYgMTsgfQorICAgIExlbmd0aFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PExlbmd0aFR5cGU+KG1fdHlwZSk7IH0KKyAgICBib29sIHF1
aXJrKCkgY29uc3QgeyByZXR1cm4gbV9xdWlyazsgfQogCiAgICAgdm9pZCBzZXRWYWx1ZShMZW5n
dGhUeXBlIHQsIGludCB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0ICE9IFBlcmNlbnQp
OwotICAgICAgICBzZXRSYXdWYWx1ZSh0LCB2YWx1ZSk7CisgICAgICAgICp0aGlzID0gTGVuZ3Ro
KHZhbHVlLCB0KTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJhd1ZhbHVlKExlbmd0aFR5cGUgdCwg
aW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwgdDsg
fQotCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQo
IXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKLSAgICAgICAgc2V0UmF3VmFsdWUodmFsdWUp
OworICAgICAgICAqdGhpcyA9IExlbmd0aCh2YWx1ZSwgRml4ZWQpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0UmF3VmFsdWUoaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwgKG1fdmFs
dWUgJiAweEYpOyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwgZG91YmxlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7Ci0gICAgICAgIG1fdmFs
dWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogcGVyY2VudFNjYWxlRmFjdG9yKSAqIDE2IHwg
KG1fdmFsdWUgJiAweDgpIHwgdDsKKyAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIHQpOwog
ICAgIH0KIAogICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKHR5cGUoKSA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0
PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAobV92YWx1ZSAmIDB4Rik7
CisgICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCiAgICAgLy8g
bm90ZTogd29ya3Mgb25seSBmb3IgY2VydGFpbiB0eXBlcywgcmV0dXJucyB1bmRlZmluZWRMZW5n
dGggb3RoZXJ3aXNlCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
c3dpdGNoICh0eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpOwogICAgICAgICAgICAgY2FzZSBQZXJjZW50OgogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJjZW50KCkg
LyAxMDAuMCk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CkBAIC0xNTUsNyArMTU1LDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVybiByYXdW
YWx1ZSgpID09IHVuZGVmaW5lZExlbmd0aDsgfQotICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyBy
ZXR1cm4gIShtX3ZhbHVlICYgfjB4Rik7IH0KKyAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0
dXJuICFnZXRJbnRWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3QgeyByZXR1
cm4gcmF3VmFsdWUoKSA+IDA7IH0KICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJldHVy
biByYXdWYWx1ZSgpIDwgMDsgfQogCkBAIC0xODUsMTMgKzE4NSwzMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gTGVuZ3RoKGZyb21QZXJjZW50ICsgKHRvUGVyY2VudCAtIGZyb21QZXJj
ZW50KSAqIHByb2dyZXNzLCBQZXJjZW50KTsKICAgICAgICAgfSAKICAgICAgICAgICAgIAotICAg
ICAgICBpbnQgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLnZhbHVlKCk7Ci0g
ICAgICAgIGludCB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogdmFsdWUoKTsKLSAgICAgICAgcmV0
dXJuIExlbmd0aChpbnQoZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9tVmFsdWUpICogcHJvZ3Jl
c3MpLCByZXN1bHRUeXBlKTsKKyAgICAgICAgZG91YmxlIGZyb21WYWx1ZSA9IGZyb20uaXNaZXJv
KCkgPyAwIDogZnJvbS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgIGRvdWJsZSB0b1ZhbHVlID0g
aXNaZXJvKCkgPyAwIDogZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICByZXR1cm4gTGVuZ3RoKGZy
b21WYWx1ZSArICh0b1ZhbHVlIC0gZnJvbVZhbHVlKSAqIHByb2dyZXNzLCByZXN1bHRUeXBlKTsK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7CisgICAgaW50IGdldEludFZhbHVl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzRmxvYXQpCisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihtX2Zsb2F0VmFsdWUpOworICAgICAgICByZXR1cm4gbV9pbnRW
YWx1ZTsKKyAgICB9CisgICAgCisgICAgZmxvYXQgZ2V0RmxvYXRWYWx1ZSgpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAgICAgcmV0dXJuIG1fZmxvYXRWYWx1
ZTsKKyAgICAgICAgcmV0dXJuIG1faW50VmFsdWU7CisgICAgfQorICAgIAorICAgIHVuaW9uIHsK
KyAgICAgICAgaW50IG1faW50VmFsdWU7CisgICAgICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKKyAg
ICB9OworICAgIHVuc2lnbmVkIGNoYXIgbV9xdWlyayAgIDogMTsKKyAgICB1bnNpZ25lZCBjaGFy
IG1fdHlwZSAgICA6IDM7CisgICAgdW5zaWduZWQgY2hhciBtX2lzRmxvYXQgOiAxOwogfTsKIAog
UGFzc093bkFycmF5UHRyPExlbmd0aD4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50
JiBsZW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5jcHAJKHJldmlzaW9uIDc4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBBdXRv
VGFibGVMYXlvdXQ6OnJlY2FsY0NvbHVtbihpbnQgZQogICAgICAgICAgICAgICAgICAgICBMZW5n
dGggY2VsbExvZ2ljYWxXaWR0aCA9IGNlbGwtPnN0eWxlT3JDb2xMb2dpY2FsV2lkdGgoKTsKICAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoYXQgaXMgdGhpcyBhcmJpdHJhcnkgdmFsdWU/
CiAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLnJhd1ZhbHVlKCkgPiAz
Mjc2MCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0UmF3VmFs
dWUoMzI3NjApOworICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRW
YWx1ZSgzMjc2MCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlz
TmVnYXRpdmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0
VmFsdWUoMCk7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2VsbExvZ2ljYWxXaWR0aC50
eXBlKCkpIHsKQEAgLTM3NCw3ICszNzQsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZm
ZWN0aXZlTG9naWNhCiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFdpZHRoIC09IG1fbGF5
b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcGVyY2VudE1pc3NpbmcgLT0gcGVyY2VudDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwZXJjZW50ID4gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xheW91
dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5zZXRSYXdWYWx1ZShQZXJjZW50LCBw
ZXJjZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtwb3Nd
LmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShQZXJjZW50LCBwZXJjZW50KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xh
eW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aCA9IExlbmd0aCgpOwogICAgICAg
ICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJs
ZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVk
VGFibGVMYXlvdXQuY3BwCShyZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3
IEBAIGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheShpbnQKICAgICAgICAgICAg
ICAgICAgICAgc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbiA9IG1fdGFibGUtPnNwYW5PZkVm
ZkNvbChjdXJyZW50RWZmZWN0aXZlQ29sdW1uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgaWYgKCh3LmlzRml4ZWQoKSB8fCB3LmlzUGVyY2VudCgpKSAmJiB3LmlzUG9zaXRp
dmUoKSkgewotICAgICAgICAgICAgICAgICAgICBtX3dpZHRoW2N1cnJlbnRFZmZlY3RpdmVDb2x1
bW5dLnNldFJhd1ZhbHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBzcGFuSW5DdXJyZW50RWZm
ZWN0aXZlQ29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgbV93aWR0aFtjdXJyZW50RWZmZWN0
aXZlQ29sdW1uXS5zZXRWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogc3BhbkluQ3VycmVu
dEVmZmVjdGl2ZUNvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgIHVzZWRXaWR0aCArPSBlZmZX
aWR0aCAqIHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW47CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHNwYW4gLT0gc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbjsKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBpbnQgRml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoaW50
CiAgICAgICAgICAgICAgICAgICAgIGludCBlU3BhbiA9IG1fdGFibGUtPnNwYW5PZkVmZkNvbChj
Q29sICsgaSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgc2V0IGlmIG5vIGNvbCBlbGVt
ZW50IGhhcyBhbHJlYWR5IHNldCBpdC4KICAgICAgICAgICAgICAgICAgICAgaWYgKG1fd2lkdGhb
Y0NvbCArIGldLmlzQXV0bygpICYmIHcudHlwZSgpICE9IEF1dG8pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fd2lkdGhbY0NvbCArIGldLnNldFJhd1ZhbHVlKHcudHlwZSgpLCB3LnJhd1Zh
bHVlKCkgKiBlU3BhbiAvIHNwYW4pOworICAgICAgICAgICAgICAgICAgICAgICAgbV93aWR0aFtj
Q29sICsgaV0uc2V0VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIGVTcGFuIC8gc3Bhbik7
CiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkV2lkdGggKz0gZWZmV2lkdGggKiBlU3BhbiAv
IHNwYW47CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgdXNlZFNw
YW4gKz0gZVNwYW47CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTA0MSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAyLTE4ICBSaWsg
Q2FiYW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHRoYXQgYWxsb3dzIGZpeGVkIGxlbmd0aCB2YWx1
ZXMgdG8gYmUgZmxvYXRpbmcgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUyNjk5CisKKyAgICAgICAgVHJhbnNpdGlvbnMgbm93IHJldHVybiBt
YXRyaWNlcyBpbiBmbG9hdGluZyBwb2ludC4gMiBvZiB0aGUgdHJhbnNpdGlvbiB0ZXN0cyB3ZXJl
IGZhaWxpbmcKKyAgICAgICAgYmVjYXVzZSB0aGV5IGV4cGVjdGVkIGludGVnZXIgdmFsdWVzLgor
CisgICAgICAgICogdHJhbnNpdGlvbnMvbWF0Y2hlZC10cmFuc2Zvcm0tZnVuY3Rpb25zLmh0bWw6
CisgICAgICAgICogdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sOgorCiAy
MDExLTAyLTE4ICBBbmRyZXcgV2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgZXhwZWN0YXRpb25zIGNoYW5nZS4KSW5kZXg6IExheW91dFRlc3RzL3Ry
YW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1s
CShyZXZpc2lvbiA3ODU4NikKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJh
bnNmb3JtLWZ1bmN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsOSBAQAog
CiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgdmFyIHQgPSB3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9y
bTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgbWF0cml4KCkKLSAgICAg
IHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAgICB2YXIgeVRyYW5zbGF0ZSA9IHBh
cnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotICAgICAgCi0gICAgICB2YXIgcmVzdWx0ID0g
KHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxkIHN0
aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworCSAgdmFyIGMgPSBuZXcgV2ViS2l0Q1NTTWF0
cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gn
KSkud2Via2l0VHJhbnNmb3JtKTsgICAgICAKKyAgICAgIHZhciByZXN1bHQgPSAoYy5mIDwgMjAw
KSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBz
byB5IDwgMjAwJzsKKwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlu
bmVySFRNTCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5zaXRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10
cmFuc2l0aW9uLmh0bWwJKHJldmlzaW9uIDc4NTg2KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiAr
MjMsOCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgdmFyIHQgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtp
dFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgbWF0cml4
KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAgICB2YXIgeVRyYW5z
bGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotCi0gICAgICB2YXIgcmVzdWx0
ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxk
IHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworICAgICAgdmFyIGMgPSBuZXcgV2ViS2l0
Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsKKyAgICAgIHZhciByZXN1bHQgPSAoYy5mIDwgMjAw
KSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBz
byB5IDwgMjAwJzsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSByZXN1bHQ7CiAKICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83572</attachid>
            <date>2011-02-23 16:20:29 -0800</date>
            <delta_ts>2011-02-24 15:12:34 -0800</delta_ts>
            <desc>split Length calculation in 2 seperate functions as not to disturb non-transform parameters</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21386</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NDk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDItMjMgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
cmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6cXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNh
bGNDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0
aXZlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6
CisKIDIwMTEtMDItMjMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2NCw4ICszMjY0LDcgQEAgdm9p
ZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC8vIHRoaXMgaXMgbW9zdGx5IGJvcmluZyBzdHVmZiBvbiBob3cgdG8gYXBwbHkgYSBjZXJ0
YWluIHJ1bGUgdG8gdGhlIHJlbmRlcnN0eWxlLi4uCi0KLXN0YXRpYyBMZW5ndGggY29udmVydFRv
TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wg
Km9rID0gMCkKK3N0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBib29sIHRvRmxvYXQsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQog
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdG9sZXJhbnQgb2YgYSBudWxsIHN0eWxlIHZhbHVl
LiBUaGUgb25seSBwbGFjZSBzdHlsZSBpcyB1c2VkIGlzIGluCiAgICAgLy8gbGVuZ3RoIG1lYXN1
cmVtZW50cywgbGlrZSAnZW1zJyBhbmQgJ3B4Jy4gQW5kIGluIHRob3NlIGNhc2VzIHN0eWxlIGlz
IG9ubHkgdXNlZApAQCAtMzI3NiwxMiArMzI3NSwxNiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpCiAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0g
ICAgICAgIAorCiAgICAgICAgIGlmICghc3R5bGUgJiYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FTVMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUyB8fCB0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUykpIHsKICAgICAgICAgICAgIGlmIChvaykK
ICAgICAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmIChDU1NQcmlt
aXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5n
dGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RT
dHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIGlmIChDU1NQcmltaXRp
dmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAgaWYgKHRvRmxv
YXQpCisgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSwgRml4ZWQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZp
eGVkKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlmICh0eXBlID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQpAQCAtMzI5Miw2ICszMjk1LDE2IEBAIHN0
YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICByZXR1cm4gbDsKIH0K
IAorc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUs
IGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQoreworICAgIHJldHVybiBjb252
ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIGZhbHNlLCBtdWx0
aXBsaWVyLCBvayk7Cit9CisKK3N0YXRpYyBMZW5ndGggY29udmVydFRvRmxvYXRMZW5ndGgoQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQor
eworICAgIHJldHVybiBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHRydWUsIG11bHRpcGxpZXIsIG9rKTsKK30KKwogdGVtcGxhdGUgPGJvb2wgYXBwbHlG
aXJzdD4KIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpc0lt
cG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCkKIHsKQEAgLTQ2MTEsMTAgKzQ2
MjQsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAg
ICAgICAgUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKTsKICAgICAg
ICAgICAgIGlmICghcmVjdCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0
b3AgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChy
ZWN0LT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwot
ICAgICAgICAgICAgYm90dG9tID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPmJvdHRvbSgpLCBzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgbGVmdCA9
IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICB0b3AgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVj
dC0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICByaWdodCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWN0LT5yaWdodCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgYm90dG9tID0g
Y29udmVydFRvSW50TGVuZ3RoKHJlY3QtPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgbGVmdCA9IGNvbnZlcnRUb0ludExlbmd0
aChyZWN0LT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7
CiAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgIT0gQ1NTVmFs
dWVBdXRvKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTU1MDMsOSArNTUx
Niw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAg
fQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAg
ICAgTGVuZ3RoIGwgPSBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKKyAgICAgICAgICAgIExlbmd0aCBtYXJxdWVlTGVu
Z3RoID0gY29udmVydFRvSW50TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIDEsICZvayk7CiAgICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChsKTsKKyAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KG1hcnF1ZWVMZW5ndGgpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC01NjUxLDEwICs1NjY0LDEwIEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgIAogICAgICAgICBEYXNoYm9h
cmRSZWdpb24gKmZpcnN0ID0gcmVnaW9uOwogICAgICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAg
ICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252
ZXJ0VG9MZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
OwotICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmJv
dHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3Ro
IGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3Ro
KHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAg
ICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNv
bnZlcnRUb0ludExlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVn
aW9uLT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICBp
ZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQogICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hi
b2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWws
IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVl
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKQEAgLTcxMTMs
MTMgKzcxMjYsMTMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAog
ICAgICAgICAgICAgICAgIExlbmd0aCB0eCA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAg
ICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAo
dHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkg
PSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rv
ciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChm
aXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAg
ICAgICAgIGVsc2UgeyAKLSAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgo
Zmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAg
ICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwg
cm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJh
bnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNv
bmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKHNlY29uZFZhbHVlLCBz
dHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzEzNywx
OSArNzE1MCwxOSBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAg
ICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAg
ICAgICBMZW5ndGggdHogPSBMZW5ndGgoMCwgRml4ZWQpOwogICAgICAgICAgICAgICAgIGlmICh0
cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0eiA9
IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9y
LCAmb2spOworICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZp
cnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0
VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAm
b2spOwogICAgICAgICAgICAgICAgIGVsc2UgeyAKLSAgICAgICAgICAgICAgICAgICAgdHggPSBj
b252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvciwg
Jm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJz
dFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAg
ICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6ID0gY29udmVy
dFRvTGVuZ3RoKHRoaXJkVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0
aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZh
bHVlLT5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxl
LCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzI4MCw3ICs3MjkzLDcgQEAgYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIGJv
b2wgb2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIExlbmd0aCBwID0gTGVuZ3RoKDAsIEZpeGVk
KTsKICAgICAgICAgICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5n
dGgoZmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgcCA9
IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9y
LCAmb2spOworICAgICAgICAgICAgICAgICAgICBwID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmly
c3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHF1aXJrIHRoYXQg
c2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0cmFuc2Zvcm1zIGFyZSBmaW5hbGl6ZWQuCiAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJKHJldmlzaW9uIDc4NTg2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDM2ICs0MCw0
MiBAQCBzdHJ1Y3QgTGVuZ3RoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBMZW5ndGgoKQotICAgICAgICA6IG1fdmFsdWUoMCkKKyAgICAgICAgOiBtX2ludFZh
bHVlKDApLCBtX3F1aXJrKDApLCBtX3R5cGUoQXV0byksIG1faXNGbG9hdCgwKQogICAgIHsKICAg
ICB9CiAKICAgICBMZW5ndGgoTGVuZ3RoVHlwZSB0KQotICAgICAgICA6IG1fdmFsdWUodCkKKyAg
ICAgICAgOiBtX2ludFZhbHVlKDApLCBtX3F1aXJrKDApLCBtX3R5cGUodCksIG1faXNGbG9hdCgw
KQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGgoaW50IHYsIExlbmd0aFR5cGUgdCwgYm9vbCBx
ID0gZmFsc2UpCi0gICAgICAgIDogbV92YWx1ZSgodiAqIDE2KSB8IChxIDw8IDMpIHwgdCkgLy8g
RklYTUU6IERvZXNuJ3Qgd29yayBpZiB0aGUgcGFzc2VkLWluIHZhbHVlIGlzIHZlcnkgbGFyZ2Uh
CisgICAgICAgIDogbV9pbnRWYWx1ZSh2KSwgbV9xdWlyayhxKSwgbV90eXBlKHQpLCBtX2lzRmxv
YXQoMCkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0ICE9IFBlcmNlbnQpOwogICAgIH0KIAogICAg
IExlbmd0aChkb3VibGUgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKLSAgICAgICAg
OiBtX3ZhbHVlKHN0YXRpY19jYXN0PGludD4odiAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8
IChxIDw8IDMpIHwgdCkKKyAgICAgICAgOiBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9h
dCgwKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7CisgICAgICAgIGlmICht
X3R5cGUgPT0gUGVyY2VudCkKKyAgICAgICAgICAgIG1faW50VmFsdWUgPSBzdGF0aWNfY2FzdDxp
bnQ+KHYqcGVyY2VudFNjYWxlRmFjdG9yKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBt
X2lzRmxvYXQgPSAxOyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9mbG9hdFZhbHVlID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHYpOworICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIChnZXRGbG9hdFZhbHVlKCkg
PT0gby5nZXRGbG9hdFZhbHVlKCkpICYmIChtX3R5cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJr
ID09IG8ubV9xdWlyayk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBj
b25zdCB7IHJldHVybiAoZ2V0RmxvYXRWYWx1ZSgpICE9IG8uZ2V0RmxvYXRWYWx1ZSgpKSB8fCAo
bV90eXBlICE9IG8ubV90eXBlKSB8fCAobV9xdWlyayAhPSBvLm1fcXVpcmspOyB9CiAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09
IG8ubV92YWx1ZTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGgmIG8pIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUgIT0gby5tX3ZhbHVlOyB9Ci0KKyAgICAKICAgICBpbnQgdmFsdWUo
KSBjb25zdCB7CiAgICAgICAgIEFTU0VSVCh0eXBlKCkgIT0gUGVyY2VudCk7CiAgICAgICAgIHJl
dHVybiByYXdWYWx1ZSgpOwogICAgIH0KIAotICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIChtX3ZhbHVlICYgfjB4RikgLyAxNjsgfQorICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGdldEludFZhbHVlKCk7IH0KIAogICAgIGRvdWJsZSBwZXJjZW50KCkgY29uc3QKICAg
ICB7CkBAIC03NywzNSArODMsMjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZG91YmxlPihyYXdWYWx1ZSgpKSAvIHBlcmNlbnRTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAg
ICBMZW5ndGhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhUeXBl
PihtX3ZhbHVlICYgNyk7IH0KLSAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gKG1fdmFs
dWUgPj4gMykgJiAxOyB9CisgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQorICAgIGJvb2wgcXVpcmsoKSBjb25zdCB7
IHJldHVybiBtX3F1aXJrOyB9CiAKICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwgaW50
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHQgIT0gUGVyY2VudCk7Ci0gICAgICAgIHNl
dFJhd1ZhbHVlKHQsIHZhbHVlKTsKKyAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIHQpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoTGVuZ3RoVHlwZSB0LCBpbnQgdmFsdWUpIHsg
bV92YWx1ZSA9IHZhbHVlICogMTYgfCAobV92YWx1ZSAmIDB4OCkgfCB0OyB9Ci0KICAgICB2b2lk
IHNldFZhbHVlKGludCB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUgfHwgdHlw
ZSgpICE9IFBlcmNlbnQpOwotICAgICAgICBzZXRSYXdWYWx1ZSh2YWx1ZSk7CisgICAgICAgICp0
aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRSYXdWYWx1
ZShpbnQgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlICogMTYgfCAobV92YWx1ZSAmIDB4Rik7IH0K
LQogICAgIHZvaWQgc2V0VmFsdWUoTGVuZ3RoVHlwZSB0LCBkb3VibGUgdmFsdWUpCiAgICAgewot
ICAgICAgICBBU1NFUlQodCA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19j
YXN0PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAobV92YWx1ZSAmIDB4
OCkgfCB0OworICAgICAgICAqdGhpcyA9IExlbmd0aCh2YWx1ZSwgdCk7CiAgICAgfQogCiAgICAg
dm9pZCBzZXRWYWx1ZShkb3VibGUgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQodHlwZSgp
ID09IFBlcmNlbnQpOwotICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAq
IHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8IChtX3ZhbHVlICYgMHhGKTsKKyAgICAgICAgKnRo
aXMgPSBMZW5ndGgodmFsdWUsIEZpeGVkKTsKICAgICB9CiAKICAgICAvLyBub3RlOiB3b3JrcyBv
bmx5IGZvciBjZXJ0YWluIHR5cGVzLCByZXR1cm5zIHVuZGVmaW5lZExlbmd0aCBvdGhlcndpc2UK
QEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUo
KSkgewogICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRGbG9h
dFZhbHVlKCk7CiAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wKTsKICAg
ICAgICAgICAgIGNhc2UgQXV0bzoKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPT0gdW5k
ZWZpbmVkTGVuZ3RoOyB9Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhKG1fdmFs
dWUgJiB+MHhGKTsgfQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIWdldEludFZh
bHVlKCk7IH0KICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgp
ID4gMDsgfQogICAgIGJvb2wgaXNOZWdhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkg
PCAwOyB9CiAKQEAgLTE4NSwxMyArMTg1LDMzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBMZW5ndGgoZnJvbVBlcmNlbnQgKyAodG9QZXJjZW50IC0gZnJvbVBlcmNlbnQpICogcHJvZ3Jl
c3MsIFBlcmNlbnQpOwogICAgICAgICB9IAogICAgICAgICAgICAgCi0gICAgICAgIGludCBmcm9t
VmFsdWUgPSBmcm9tLmlzWmVybygpID8gMCA6IGZyb20udmFsdWUoKTsKLSAgICAgICAgaW50IHRv
VmFsdWUgPSBpc1plcm8oKSA/IDAgOiB2YWx1ZSgpOwotICAgICAgICByZXR1cm4gTGVuZ3RoKGlu
dChmcm9tVmFsdWUgKyAodG9WYWx1ZSAtIGZyb21WYWx1ZSkgKiBwcm9ncmVzcyksIHJlc3VsdFR5
cGUpOworICAgICAgICBkb3VibGUgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9t
LmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHRvVmFsdWUgPSBpc1plcm8oKSA/IDAg
OiBnZXRGbG9hdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVZhbHVlICsgKHRv
VmFsdWUgLSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MsIHJlc3VsdFR5cGUpOwogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBpbnQgbV92YWx1ZTsKKyAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKG1faXNGbG9hdCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZmxvYXRWYWx1ZSk7CisgICAgICAgIHJldHVybiBtX2ludFZhbHVlOworICAgIH0K
KyAgICAKKyAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChtX2lzRmxvYXQpCisgICAgICAgICAgICByZXR1cm4gbV9mbG9hdFZhbHVlOworICAgICAgICBy
ZXR1cm4gbV9pbnRWYWx1ZTsKKyAgICB9CisgICAgCisgICAgdW5pb24geworICAgICAgICBpbnQg
bV9pbnRWYWx1ZTsKKyAgICAgICAgZmxvYXQgbV9mbG9hdFZhbHVlOworICAgIH07CisgICAgdW5z
aWduZWQgY2hhciBtX3F1aXJrICAgOiAxOworICAgIHVuc2lnbmVkIGNoYXIgbV90eXBlICAgIDog
MzsKKyAgICB1bnNpZ25lZCBjaGFyIG1faXNGbG9hdCA6IDE7CiB9OwogCiBQYXNzT3duQXJyYXlQ
dHI8TGVuZ3RoPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkocmV2aXNp
b24gNzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6
cmVjYWxjQ29sdW1uKGludCBlCiAgICAgICAgICAgICAgICAgICAgIExlbmd0aCBjZWxsTG9naWNh
bFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGlzIGFyYml0cmFyeSB2YWx1ZT8KICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgucmF3VmFsdWUoKSA+IDMyNzYwKQotICAgICAg
ICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRSYXdWYWx1ZSgzMjc2MCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKDMyNzYwKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNOZWdhdGl2ZSgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZSgwKTsKICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewpAQCAt
Mzc0LDcgKzM3NCw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2EK
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lkdGggLT0gbV9sYXlvdXRTdHJ1Y3RbcG9z
XS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICBwZXJj
ZW50TWlzc2luZyAtPSBwZXJjZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlcmNl
bnQgPiAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W3Bvc10u
ZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFJhd1ZhbHVlKFBlcmNlbnQsIHBlcmNlbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9n
aWNhbFdpZHRoLnNldFZhbHVlKFBlcmNlbnQsIHBlcmNlbnQpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W3Bv
c10uZWZmZWN0aXZlTG9naWNhbFdpZHRoID0gTGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHAJKHJldmlzaW9uIDc4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgaW50IEZpeGVk
VGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KGludAogICAgICAgICAgICAgICAgICAgICBzcGFu
SW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gbV90YWJsZS0+c3Bhbk9mRWZmQ29sKGN1cnJlbnRF
ZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
KHcuaXNGaXhlZCgpIHx8IHcuaXNQZXJjZW50KCkpICYmIHcuaXNQb3NpdGl2ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVmZmVjdGl2ZUNvbHVtbl0uc2V0UmF3VmFs
dWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW4p
OworICAgICAgICAgICAgICAgICAgICBtX3dpZHRoW2N1cnJlbnRFZmZlY3RpdmVDb2x1bW5dLnNl
dFZhbHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29s
dW1uKTsKICAgICAgICAgICAgICAgICAgICAgdXNlZFdpZHRoICs9IGVmZldpZHRoICogc3Bhbklu
Q3VycmVudEVmZmVjdGl2ZUNvbHVtbjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgc3BhbiAtPSBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uOwpAQCAtMTY3LDcgKzE2Nyw3
IEBAIGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheShpbnQKICAgICAgICAgICAg
ICAgICAgICAgaW50IGVTcGFuID0gbV90YWJsZS0+c3Bhbk9mRWZmQ29sKGNDb2wgKyBpKTsKICAg
ICAgICAgICAgICAgICAgICAgLy8gT25seSBzZXQgaWYgbm8gY29sIGVsZW1lbnQgaGFzIGFscmVh
ZHkgc2V0IGl0LgogICAgICAgICAgICAgICAgICAgICBpZiAobV93aWR0aFtjQ29sICsgaV0uaXNB
dXRvKCkgJiYgdy50eXBlKCkgIT0gQXV0bykgewotICAgICAgICAgICAgICAgICAgICAgICAgbV93
aWR0aFtjQ29sICsgaV0uc2V0UmF3VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIGVTcGFu
IC8gc3Bhbik7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3dpZHRoW2NDb2wgKyBpXS5zZXRW
YWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogZVNwYW4gLyBzcGFuKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHVzZWRXaWR0aCArPSBlZmZXaWR0aCAqIGVTcGFuIC8gc3BhbjsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB1c2VkU3BhbiArPSBlU3BhbjsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc5NDk5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDItMjMgIFJpayBDYWJhbmllciAgPGNh
YmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0byBiZSBmbG9h
dGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTI2OTkKKworICAgICAgICBUcmFuc2l0aW9ucyBub3cgcmV0dXJuIG1hdHJpY2VzIGluIGZs
b2F0aW5nIHBvaW50LiAyIG9mIHRoZSB0cmFuc2l0aW9uIHRlc3RzIHdlcmUgZmFpbGluZworICAg
ICAgICBiZWNhdXNlIHRoZXkgZXhwZWN0ZWQgaW50ZWdlciB2YWx1ZXMuCisKKyAgICAgICAgKiB0
cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbDoKKyAgICAgICAgKiB0
cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWw6CisKIDIwMTEtMDItMjMgIE1p
aGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gUmV2ZXJ0IGluY29ycmVjdCBiYXNlbGluZSBhZGRlZCBieSByNzk0NzMuCkluZGV4OiBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5j
dGlvbnMuaHRtbAkocmV2aXNpb24gNzg1ODYpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9t
YXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIg
KzI0LDkgQEAKIAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIHZhciB0ID0gd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53ZWJr
aXRUcmFuc2Zvcm07Ci0gICAgICAvLyBncmFiIHRoZSBsYXN0IHZhbHVlIGZyb20gdGhlIG1hdHJp
eCgpCi0gICAgICB2YXIgbGFzdFZhbHVlUkUgPSAvKFxkKylcKSQvOwotICAgICAgdmFyIHlUcmFu
c2xhdGUgPSBwYXJzZUludChsYXN0VmFsdWVSRS5leGVjKHQpKTsKLSAgICAgIAotICAgICAgdmFy
IHJlc3VsdCA9ICh5VHJhbnNsYXRlIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9u
IHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKwkgIHZhciBjID0gbmV3IFdl
YktpdENTU01hdHJpeCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9ybSk7ICAgICAgCisgICAgICB2YXIgcmVzdWx0ID0g
KGMuZiA8IDIwMCkgPyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3RpbGwgYmUg
cnVubmluZywgc28geSA8IDIwMCc7CisKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAKICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10
cmFuc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmV0
YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sCShyZXZpc2lvbiA3ODU4NikKKysrIExheW91dFRlc3Rz
L3RyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5zaXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMjMsMTIgKzIzLDggQEAKIAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIHZh
ciB0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
eCcpKS53ZWJraXRUcmFuc2Zvcm07Ci0gICAgICAvLyBncmFiIHRoZSBsYXN0IHZhbHVlIGZyb20g
dGhlIG1hdHJpeCgpCi0gICAgICB2YXIgbGFzdFZhbHVlUkUgPSAvKFxkKylcKSQvOwotICAgICAg
dmFyIHlUcmFuc2xhdGUgPSBwYXJzZUludChsYXN0VmFsdWVSRS5leGVjKHQpKTsKLQotICAgICAg
dmFyIHJlc3VsdCA9ICh5VHJhbnNsYXRlIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0
aW9uIHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKyAgICAgIHZhciBjID0g
bmV3IFdlYktpdENTU01hdHJpeCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9ybSk7CisgICAgICB2YXIgcmVzdWx0ID0g
KGMuZiA8IDIwMCkgPyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3RpbGwgYmUg
cnVubmluZywgc28geSA8IDIwMCc7CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVz
dWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwogCiAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83725</attachid>
            <date>2011-02-24 15:12:34 -0800</date>
            <delta_ts>2011-02-25 10:25:14 -0800</delta_ts>
            <desc>removed bit specifiers in Length structure</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21517</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NDk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDItMjMgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICBUcmFuc2l0aW9ucyBub3cgcmV0dXJuIG1hdHJp
Y2VzIGluIGZsb2F0aW5nIHBvaW50LiAyIG9mIHRoZSB0cmFuc2l0aW9uIHRlc3RzIHdlcmUgZmFp
bGluZworICAgICAgICBiZWNhdXNlIHRoZXkgZXhwZWN0ZWQgaW50ZWdlciB2YWx1ZXMuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0ludExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0VG9GbG9hdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6OmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0
b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnJhd1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnF1aXJrKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzWmVy
byk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aDo6Z2V0SW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRGbG9h
dFZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkpOgorCiAyMDExLTAyLTIzICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24g
Nzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyNjQsOCArMzI2NCw3IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQo
KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyB0aGlzIGlzIG1vc3RseSBi
b3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2VydGFpbiBydWxlIHRvIHRoZSByZW5kZXJz
dHlsZS4uLgotCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApCitzdGF0aWMgTGVuZ3Ro
IGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgYm9vbCB0b0Zsb2F0LCBkb3Vi
bGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHlsZSB2YWx1ZS4gVGhlIG9ubHkgcGxhY2Ugc3R5bGUg
aXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0aCBtZWFzdXJlbWVudHMsIGxpa2UgJ2VtcycgYW5k
ICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBzdHlsZSBpcyBvbmx5IHVzZWQKQEAgLTMyNzYsMTIg
KzMyNzUsMTYgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aQogICAg
ICAgICAgICAgKm9rID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50IHR5cGUgPSBw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAKKwogICAgICAgICBpZiAo
IXN0eWxlICYmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TIHx8IHR5cGUgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1JFTVMpKSB7CiAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgKm9rID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVM
ZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBGaXhl
ZCk7CisgICAgICAgIH0gZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5n
dGgodHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0b0Zsb2F0KQorICAgICAgICAgICAgICAgIGwg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RT
dHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3Ro
KHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBGaXhlZCk7CisgICAgICAgIH0KICAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAg
ICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQ
ZXJjZW50KTsKICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikKQEAgLTMyOTIsNiArMzI5NSwxNiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xl
bmd0aChDU1NQcmltaXRpCiAgICAgcmV0dXJuIGw7CiB9CiAKK3N0YXRpYyBMZW5ndGggY29udmVy
dFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEs
IGJvb2wgKm9rID0gMCkKK3sKKyAgICByZXR1cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCBmYWxzZSwgbXVsdGlwbGllciwgb2spOworfQorCitzdGF0
aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkKK3sKKyAgICByZXR1cm4gY29udmVydFRv
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB0cnVlLCBtdWx0aXBsaWVy
LCBvayk7Cit9CisKIHRlbXBsYXRlIDxib29sIGFwcGx5Rmlyc3Q+CiB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKGJvb2wgaXNJbXBvcnRhbnQsIGludCBzdGFydEluZGV4
LCBpbnQgZW5kSW5kZXgpCiB7CkBAIC00NjExLDEwICs0NjI0LDEwIEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgIFJlY3QqIHJlY3QgPSBwcmlt
aXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIXJlY3QpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdG9wID0gY29udmVydFRvTGVuZ3RoKHJl
Y3QtPnRvcCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAg
ICAgICAgICAgcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+cmlnaHQoKSwgc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJvdHRvbSA9IGNv
bnZlcnRUb0xlbmd0aChyZWN0LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+
bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAg
ICAgICAgdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlY3QtPnRvcCgpLCBzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgcmlnaHQgPSBjb252ZXJ0
VG9JbnRMZW5ndGgocmVjdC0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChyZWN0
LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAg
ICAgICAgICAgIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVjdC0+bGVmdCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICB9IGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykgewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC01NTAzLDkgKzU1MTYsOSBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBib29sIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgIExlbmd0aCBsID0gY29udmVydFRv
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIDEsICZv
ayk7CisgICAgICAgICAgICBMZW5ndGggbWFycXVlZUxlbmd0aCA9IGNvbnZlcnRUb0ludExlbmd0
aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOwog
ICAgICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJ
bmNyZW1lbnQobCk7CisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVu
dChtYXJxdWVlTGVuZ3RoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NTY1MSwxMCArNTY2NCwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50CiAgICAgICAgICAgICAKICAgICAgICAgRGFzaGJvYXJkUmVnaW9uICpmaXJzdCA9IHJlZ2lv
bjsKICAgICAgICAgd2hpbGUgKHJlZ2lvbikgewotICAgICAgICAgICAgTGVuZ3RoIHRvcCA9IGNv
bnZlcnRUb0xlbmd0aChyZWdpb24tPnRvcCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
OwotICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+cmln
aHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCBi
b3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290
RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVuZ3Ro
KHJlZ2lvbi0+bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAg
ICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPnRvcCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVy
dFRvSW50TGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
KTsKKyAgICAgICAgICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9u
LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIExl
bmd0aCBsZWZ0ID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+bGVmdCgpLCBzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUpOwogICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkK
ICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9h
cmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxl
ZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CiAgICAgICAgICAgICBlbHNlIGlm
IChyZWdpb24tPm1faXNSZWN0YW5nbGUpCkBAIC03MTEzLDEzICs3MTI2LDEzIEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAgICBMZW5ndGgg
dHggPSBMZW5ndGgoMCwgRml4ZWQpOwogICAgICAgICAgICAgICAgIExlbmd0aCB0eSA9IExlbmd0
aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRp
b25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1P
cGVyYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0
VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAg
ICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBlbHNlIHsgCi0gICAgICAg
ICAgICAgICAgICAgIHR4ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgIHR4ID0gY29udmVy
dFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvciwg
Jm9rKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25U
eXBlKCkgIT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVy
YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVu
Z3RoKCkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBj
b252ZXJ0VG9GbG9hdExlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZh
Y3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTcxMzcsMTkgKzcxNTAsMTkgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIExlbmd0aCB0
eSA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3Ro
KDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlv
blR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5zZm9ybU9w
ZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAg
ICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9y
bVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5z
bGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVy
dFRvTGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7
CisgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1
ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBl
bHNlIHsgCi0gICAgICAgICAgICAgICAgICAgIHR4ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFs
dWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAg
ICAgIHR4ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZh
bHVlLT5vcGVyYXRpb25UeXBlKCkgIT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0
ZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFu
c2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aCh0aGlyZFZhbHVlLCBz
dHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR6ID0gY29udmVydFRvRmxvYXRMZW5ndGgodGhpcmRWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBj
b252ZXJ0VG9MZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3Is
ICZvayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExl
bmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KQEAgLTcyODAsNyArNzI5Myw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3Jl
YXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBMZW5ndGggcCA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgaWYg
KENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKGZpcnN0VmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSkpCi0gICAgICAgICAgICAgICAgICAgIHAgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAg
ICAgICAgcCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBxdWlyayB0aGF0IHNob3VsZCBnbyBhd2F5IHdoZW4gM2Qg
dHJhbnNmb3JtcyBhcmUgZmluYWxpemVkLgogICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFs
ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5oCShyZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwzNiArNDAsNDIgQEAgc3RydWN0IExlbmd0aCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGVuZ3RoKCkKLSAgICAg
ICAgOiBtX3ZhbHVlKDApCisgICAgICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90
eXBlKEF1dG8pLCBtX2lzRmxvYXQoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKExlbmd0
aFR5cGUgdCkKLSAgICAgICAgOiBtX3ZhbHVlKHQpCisgICAgICAgIDogbV9pbnRWYWx1ZSgwKSwg
bV9xdWlyaygwKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoMCkKICAgICB7CiAgICAgfQogCiAgICAg
TGVuZ3RoKGludCB2LCBMZW5ndGhUeXBlIHQsIGJvb2wgcSA9IGZhbHNlKQotICAgICAgICA6IG1f
dmFsdWUoKHYgKiAxNikgfCAocSA8PCAzKSB8IHQpIC8vIEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYg
dGhlIHBhc3NlZC1pbiB2YWx1ZSBpcyB2ZXJ5IGxhcmdlIQorICAgICAgICA6IG1faW50VmFsdWUo
diksIG1fcXVpcmsocSksIG1fdHlwZSh0KSwgbV9pc0Zsb2F0KDApCiAgICAgewogICAgICAgICBB
U1NFUlQodCAhPSBQZXJjZW50KTsKICAgICB9CiAKICAgICBMZW5ndGgoZG91YmxlIHYsIExlbmd0
aFR5cGUgdCwgYm9vbCBxID0gZmFsc2UpCi0gICAgICAgIDogbV92YWx1ZShzdGF0aWNfY2FzdDxp
bnQ+KHYgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAocSA8PCAzKSB8IHQpCisgICAgICAg
IDogbV9xdWlyayhxKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoMCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCh0ID09IFBlcmNlbnQpOworICAgICAgICBpZiAobV90eXBlID09IFBlcmNlbnQpCisgICAg
ICAgICAgICBtX2ludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rv
cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9pc0Zsb2F0ID0gMTsgICAgICAgICAg
ICAKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAg
ICAgICAgfQogICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBv
KSBjb25zdCB7IHJldHVybiAoZ2V0RmxvYXRWYWx1ZSgpID09IG8uZ2V0RmxvYXRWYWx1ZSgpKSAm
JiAobV90eXBlID09IG8ubV90eXBlKSAmJiAobV9xdWlyayA9PSBvLm1fcXVpcmspOyB9CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gKGdldEZsb2F0
VmFsdWUoKSAhPSBvLmdldEZsb2F0VmFsdWUoKSkgfHwgKG1fdHlwZSAhPSBvLm1fdHlwZSkgfHwg
KG1fcXVpcmsgIT0gby5tX3F1aXJrKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExl
bmd0aCYgbykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvLm1fdmFsdWU7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICE9IG8u
bV92YWx1ZTsgfQotCisgICAgCiAgICAgaW50IHZhbHVlKCkgY29uc3QgewogICAgICAgICBBU1NF
UlQodHlwZSgpICE9IFBlcmNlbnQpOwogICAgICAgICByZXR1cm4gcmF3VmFsdWUoKTsKICAgICB9
CiAKLSAgICBpbnQgcmF3VmFsdWUoKSBjb25zdCB7IHJldHVybiAobV92YWx1ZSAmIH4weEYpIC8g
MTY7IH0KKyAgICBpbnQgcmF3VmFsdWUoKSBjb25zdCB7IHJldHVybiBnZXRJbnRWYWx1ZSgpOyB9
CiAKICAgICBkb3VibGUgcGVyY2VudCgpIGNvbnN0CiAgICAgewpAQCAtNzcsMzUgKzgzLDI5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4ocmF3VmFsdWUoKSkg
LyBwZXJjZW50U2NhbGVGYWN0b3I7CiAgICAgfQogCi0gICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV92YWx1ZSAmIDcpOyB9Ci0gICAg
Ym9vbCBxdWlyaygpIGNvbnN0IHsgcmV0dXJuIChtX3ZhbHVlID4+IDMpICYgMTsgfQorICAgIExl
bmd0aFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExlbmd0aFR5cGU+KG1f
dHlwZSk7IH0KKyAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9xdWlyazsgfQogCiAg
ICAgdm9pZCBzZXRWYWx1ZShMZW5ndGhUeXBlIHQsIGludCB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVCh0ICE9IFBlcmNlbnQpOwotICAgICAgICBzZXRSYXdWYWx1ZSh0LCB2YWx1ZSk7Cisg
ICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCB0KTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJh
d1ZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwg
KG1fdmFsdWUgJiAweDgpIHwgdDsgfQotCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKLSAgICAg
ICAgc2V0UmF3VmFsdWUodmFsdWUpOworICAgICAgICAqdGhpcyA9IExlbmd0aCh2YWx1ZSwgRml4
ZWQpOwogICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoaW50IHZhbHVlKSB7IG1fdmFsdWUg
PSB2YWx1ZSAqIDE2IHwgKG1fdmFsdWUgJiAweEYpOyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKExl
bmd0aFR5cGUgdCwgZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVy
Y2VudCk7Ci0gICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogcGVyY2Vu
dFNjYWxlRmFjdG9yKSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwgdDsKKyAgICAgICAgKnRoaXMg
PSBMZW5ndGgodmFsdWUsIHQpOwogICAgIH0KIAogICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBQZXJjZW50KTsKLSAgICAgICAg
bV92YWx1ZSA9IHN0YXRpY19jYXN0PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICog
MTYgfCAobV92YWx1ZSAmIDB4Rik7CisgICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhl
ZCk7CiAgICAgfQogCiAgICAgLy8gbm90ZTogd29ya3Mgb25seSBmb3IgY2VydGFpbiB0eXBlcywg
cmV0dXJucyB1bmRlZmluZWRMZW5ndGggb3RoZXJ3aXNlCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2Ug
Rml4ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpOwogICAgICAgICAgICAg
Y2FzZSBQZXJjZW50OgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
bWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMCk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CkBA
IC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRlZmluZWQo
KSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgpID09IHVuZGVmaW5lZExlbmd0aDsgfQotICAgIGJv
b2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIShtX3ZhbHVlICYgfjB4Rik7IH0KKyAgICBib29s
IGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFnZXRJbnRWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc1Bv
c2l0aXZlKCkgY29uc3QgeyByZXR1cm4gcmF3VmFsdWUoKSA+IDA7IH0KICAgICBib29sIGlzTmVn
YXRpdmUoKSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgpIDwgMDsgfQogCkBAIC0xODUsMTMgKzE4
NSwzMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKGZyb21QZXJjZW50ICsg
KHRvUGVyY2VudCAtIGZyb21QZXJjZW50KSAqIHByb2dyZXNzLCBQZXJjZW50KTsKICAgICAgICAg
fSAKICAgICAgICAgICAgIAotICAgICAgICBpbnQgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/
IDAgOiBmcm9tLnZhbHVlKCk7Ci0gICAgICAgIGludCB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDog
dmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIExlbmd0aChpbnQoZnJvbVZhbHVlICsgKHRvVmFsdWUg
LSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MpLCByZXN1bHRUeXBlKTsKKyAgICAgICAgZG91YmxlIGZy
b21WYWx1ZSA9IGZyb20uaXNaZXJvKCkgPyAwIDogZnJvbS5nZXRGbG9hdFZhbHVlKCk7CisgICAg
ICAgIGRvdWJsZSB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogZ2V0RmxvYXRWYWx1ZSgpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoKGZyb21WYWx1ZSArICh0b1ZhbHVlIC0gZnJvbVZhbHVlKSAqIHBy
b2dyZXNzLCByZXN1bHRUeXBlKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7
CisgICAgaW50IGdldEludFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzRmxv
YXQpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2Zsb2F0VmFsdWUpOwor
ICAgICAgICByZXR1cm4gbV9pbnRWYWx1ZTsKKyAgICB9CisgICAgCisgICAgZmxvYXQgZ2V0Rmxv
YXRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAg
ICAgcmV0dXJuIG1fZmxvYXRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIG1faW50VmFsdWU7CisgICAg
fQorICAgIAorICAgIHVuaW9uIHsKKyAgICAgICAgaW50IG1faW50VmFsdWU7CisgICAgICAgIGZs
b2F0IG1fZmxvYXRWYWx1ZTsKKyAgICB9OworICAgIHVuc2lnbmVkIGNoYXIgbV9xdWlyazsKKyAg
ICB1bnNpZ25lZCBjaGFyIG1fdHlwZTsKKyAgICB1bnNpZ25lZCBjaGFyIG1faXNGbG9hdDsKIH07
CiAKIFBhc3NPd25BcnJheVB0cjxMZW5ndGg+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYs
IGludCYgbGVuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlv
dXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVM
YXlvdXQuY3BwCShyZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9B
dXRvVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQg
QXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1bW4oaW50IGUKICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoIGNlbGxMb2dpY2FsV2lkdGggPSBjZWxsLT5zdHlsZU9yQ29sTG9naWNhbFdpZHRoKCk7
CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlzIHRoaXMgYXJiaXRyYXJ5IHZh
bHVlPwogICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5yYXdWYWx1ZSgp
ID4gMzI3NjApCi0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFJh
d1ZhbHVlKDMyNzYwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGgu
c2V0VmFsdWUoMzI3NjApOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0
aC5pc05lZ2F0aXZlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRo
LnNldFZhbHVlKDApOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNlbGxMb2dpY2FsV2lk
dGgudHlwZSgpKSB7CkBAIC0zNzQsNyArMzc0LDcgQEAgaW50IEF1dG9UYWJsZUxheW91dDo6Y2Fs
Y0VmZmVjdGl2ZUxvZ2ljYQogICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxXaWR0aCAtPSBt
X2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHBlcmNlbnRNaXNzaW5nIC09IHBlcmNlbnQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocGVyY2VudCA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9s
YXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguc2V0UmF3VmFsdWUoUGVyY2Vu
dCwgcGVyY2VudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3Rb
cG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguc2V0VmFsdWUoUGVyY2VudCwgcGVyY2VudCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGggPSBMZW5ndGgoKTsKICAg
ICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVk
VGFibGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aXhlZFRhYmxlTGF5b3V0LmNwcAkocmV2aXNpb24gNzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsx
MTgsNyBAQCBpbnQgRml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoaW50CiAgICAgICAg
ICAgICAgICAgICAgIHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW4gPSBtX3RhYmxlLT5zcGFu
T2ZFZmZDb2woY3VycmVudEVmZmVjdGl2ZUNvbHVtbik7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGlmICgody5pc0ZpeGVkKCkgfHwgdy5pc1BlcmNlbnQoKSkgJiYgdy5pc1Bv
c2l0aXZlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV93aWR0aFtjdXJyZW50RWZmZWN0aXZl
Q29sdW1uXS5zZXRSYXdWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogc3BhbkluQ3VycmVu
dEVmZmVjdGl2ZUNvbHVtbik7CisgICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVm
ZmVjdGl2ZUNvbHVtbl0uc2V0VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIHNwYW5JbkN1
cnJlbnRFZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICB1c2VkV2lkdGggKz0g
ZWZmV2lkdGggKiBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBzcGFuIC09IHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW47
CkBAIC0xNjcsNyArMTY3LDcgQEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5
KGludAogICAgICAgICAgICAgICAgICAgICBpbnQgZVNwYW4gPSBtX3RhYmxlLT5zcGFuT2ZFZmZD
b2woY0NvbCArIGkpOwogICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHNldCBpZiBubyBjb2wg
ZWxlbWVudCBoYXMgYWxyZWFkeSBzZXQgaXQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3dp
ZHRoW2NDb2wgKyBpXS5pc0F1dG8oKSAmJiB3LnR5cGUoKSAhPSBBdXRvKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3dpZHRoW2NDb2wgKyBpXS5zZXRSYXdWYWx1ZSh3LnR5cGUoKSwgdy5y
YXdWYWx1ZSgpICogZVNwYW4gLyBzcGFuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fd2lk
dGhbY0NvbCArIGldLnNldFZhbHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBlU3BhbiAvIHNw
YW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgdXNlZFdpZHRoICs9IGVmZldpZHRoICogZVNw
YW4gLyBzcGFuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHVz
ZWRTcGFuICs9IGVTcGFuOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzk0OTkpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMi0yMyAg
UmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB0aGF0IGFsbG93cyBmaXhlZCBsZW5ndGgg
dmFsdWVzIHRvIGJlIGZsb2F0aW5nIHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjY5OQorCisgICAgICAgIFRyYW5zaXRpb25zIG5vdyByZXR1
cm4gbWF0cmljZXMgaW4gZmxvYXRpbmcgcG9pbnQuIDIgb2YgdGhlIHRyYW5zaXRpb24gdGVzdHMg
d2VyZSBmYWlsaW5nCisgICAgICAgIGJlY2F1c2UgdGhleSBleHBlY3RlZCBpbnRlZ2VyIHZhbHVl
cy4KKworICAgICAgICAqIHRyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5o
dG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5zaXRpb24uaHRtbDoK
KwogMjAxMS0wMi0yMyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLiBSZXZlcnQgaW5jb3JyZWN0IGJhc2VsaW5lIGFkZGVkIGJ5IHI3
OTQ3My4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1
bmN0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNo
ZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiA3ODU4NikKKysrIExheW91dFRl
c3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCwxMiArMjQsOSBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewot
ICAgICAgdmFyIHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFs
dWUgZnJvbSB0aGUgbWF0cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87
Ci0gICAgICB2YXIgeVRyYW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwot
ICAgICAgCi0gICAgICB2YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDog
J0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOwor
CSAgdmFyIGMgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsgICAgICAKKyAg
ICAgIHZhciByZXN1bHQgPSAoYy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9u
IHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKwogICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKIAogICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRp
b25zL3JldGFyZ2V0dGVkLXRyYW5zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHJldmlzaW9uIDc4NTg2
KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsOCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgewotICAgICAgdmFyIHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhl
IGxhc3QgdmFsdWUgZnJvbSB0aGUgbWF0cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8o
XGQrKVwpJC87Ci0gICAgICB2YXIgeVRyYW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4
ZWModCkpOwotCi0gICAgICB2YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1Mn
IDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAn
OworICAgICAgdmFyIGMgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsKKyAg
ICAgIHZhciByZXN1bHQgPSAoYy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9u
IHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAKICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83831</attachid>
            <date>2011-02-25 10:25:14 -0800</date>
            <delta_ts>2011-03-01 17:01:59 -0800</delta_ts>
            <desc>moved &apos;unsigned char&apos; to &apos;bool&apos; type</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21499</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NDk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDItMjMgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICBUcmFuc2l0aW9ucyBub3cgcmV0dXJuIG1hdHJp
Y2VzIGluIGZsb2F0aW5nIHBvaW50LiAyIG9mIHRoZSB0cmFuc2l0aW9uIHRlc3RzIHdlcmUgZmFp
bGluZworICAgICAgICBiZWNhdXNlIHRoZXkgZXhwZWN0ZWQgaW50ZWdlciB2YWx1ZXMuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0ludExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0VG9GbG9hdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6OmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0
b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnJhd1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnF1aXJrKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzWmVy
byk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aDo6Z2V0SW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRGbG9h
dFZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkpOgorCiAyMDExLTAyLTIzICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24g
Nzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyNjQsOCArMzI2NCw3IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQo
KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyB0aGlzIGlzIG1vc3RseSBi
b3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2VydGFpbiBydWxlIHRvIHRoZSByZW5kZXJz
dHlsZS4uLgotCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApCitzdGF0aWMgTGVuZ3Ro
IGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgYm9vbCB0b0Zsb2F0LCBkb3Vi
bGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHlsZSB2YWx1ZS4gVGhlIG9ubHkgcGxhY2Ugc3R5bGUg
aXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0aCBtZWFzdXJlbWVudHMsIGxpa2UgJ2VtcycgYW5k
ICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBzdHlsZSBpcyBvbmx5IHVzZWQKQEAgLTMyNzYsMTIg
KzMyNzUsMTYgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aQogICAg
ICAgICAgICAgKm9rID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50IHR5cGUgPSBw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAKKwogICAgICAgICBpZiAo
IXN0eWxlICYmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TIHx8IHR5cGUgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1JFTVMpKSB7CiAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgKm9rID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVM
ZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBGaXhl
ZCk7CisgICAgICAgIH0gZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5n
dGgodHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0b0Zsb2F0KQorICAgICAgICAgICAgICAgIGwg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RT
dHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3Ro
KHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBGaXhlZCk7CisgICAgICAgIH0KICAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAg
ICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQ
ZXJjZW50KTsKICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikKQEAgLTMyOTIsNiArMzI5NSwxNiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xl
bmd0aChDU1NQcmltaXRpCiAgICAgcmV0dXJuIGw7CiB9CiAKK3N0YXRpYyBMZW5ndGggY29udmVy
dFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEs
IGJvb2wgKm9rID0gMCkKK3sKKyAgICByZXR1cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCBmYWxzZSwgbXVsdGlwbGllciwgb2spOworfQorCitzdGF0
aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkKK3sKKyAgICByZXR1cm4gY29udmVydFRv
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB0cnVlLCBtdWx0aXBsaWVy
LCBvayk7Cit9CisKIHRlbXBsYXRlIDxib29sIGFwcGx5Rmlyc3Q+CiB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKGJvb2wgaXNJbXBvcnRhbnQsIGludCBzdGFydEluZGV4
LCBpbnQgZW5kSW5kZXgpCiB7CkBAIC00NjExLDEwICs0NjI0LDEwIEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgIFJlY3QqIHJlY3QgPSBwcmlt
aXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIXJlY3QpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdG9wID0gY29udmVydFRvTGVuZ3RoKHJl
Y3QtPnRvcCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAg
ICAgICAgICAgcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+cmlnaHQoKSwgc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJvdHRvbSA9IGNv
bnZlcnRUb0xlbmd0aChyZWN0LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+
bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAg
ICAgICAgdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlY3QtPnRvcCgpLCBzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgcmlnaHQgPSBjb252ZXJ0
VG9JbnRMZW5ndGgocmVjdC0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChyZWN0
LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAg
ICAgICAgICAgIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVjdC0+bGVmdCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICB9IGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykgewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC01NTAzLDkgKzU1MTYsOSBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBib29sIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgIExlbmd0aCBsID0gY29udmVydFRv
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIDEsICZv
ayk7CisgICAgICAgICAgICBMZW5ndGggbWFycXVlZUxlbmd0aCA9IGNvbnZlcnRUb0ludExlbmd0
aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOwog
ICAgICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJ
bmNyZW1lbnQobCk7CisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVu
dChtYXJxdWVlTGVuZ3RoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NTY1MSwxMCArNTY2NCwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50CiAgICAgICAgICAgICAKICAgICAgICAgRGFzaGJvYXJkUmVnaW9uICpmaXJzdCA9IHJlZ2lv
bjsKICAgICAgICAgd2hpbGUgKHJlZ2lvbikgewotICAgICAgICAgICAgTGVuZ3RoIHRvcCA9IGNv
bnZlcnRUb0xlbmd0aChyZWdpb24tPnRvcCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
OwotICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+cmln
aHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCBi
b3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290
RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVuZ3Ro
KHJlZ2lvbi0+bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAg
ICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPnRvcCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVy
dFRvSW50TGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
KTsKKyAgICAgICAgICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9u
LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIExl
bmd0aCBsZWZ0ID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+bGVmdCgpLCBzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUpOwogICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkK
ICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9h
cmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxl
ZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CiAgICAgICAgICAgICBlbHNlIGlm
IChyZWdpb24tPm1faXNSZWN0YW5nbGUpCkBAIC03MTEzLDEzICs3MTI2LDEzIEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAgICBMZW5ndGgg
dHggPSBMZW5ndGgoMCwgRml4ZWQpOwogICAgICAgICAgICAgICAgIExlbmd0aCB0eSA9IExlbmd0
aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRp
b25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1P
cGVyYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0
VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAg
ICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBlbHNlIHsgCi0gICAgICAg
ICAgICAgICAgICAgIHR4ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgIHR4ID0gY29udmVy
dFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvciwg
Jm9rKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25U
eXBlKCkgIT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVy
YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVu
Z3RoKCkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBj
b252ZXJ0VG9GbG9hdExlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZh
Y3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTcxMzcsMTkgKzcxNTAsMTkgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIExlbmd0aCB0
eSA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3Ro
KDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlv
blR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5zZm9ybU9w
ZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAg
ICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9y
bVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5z
bGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVy
dFRvTGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7
CisgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1
ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBl
bHNlIHsgCi0gICAgICAgICAgICAgICAgICAgIHR4ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFs
dWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAg
ICAgIHR4ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZh
bHVlLT5vcGVyYXRpb25UeXBlKCkgIT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0
ZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFu
c2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aCh0aGlyZFZhbHVlLCBz
dHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR6ID0gY29udmVydFRvRmxvYXRMZW5ndGgodGhpcmRWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBj
b252ZXJ0VG9MZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3Is
ICZvayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExl
bmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KQEAgLTcyODAsNyArNzI5Myw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3Jl
YXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBMZW5ndGggcCA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgaWYg
KENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKGZpcnN0VmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSkpCi0gICAgICAgICAgICAgICAgICAgIHAgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAg
ICAgICAgcCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBxdWlyayB0aGF0IHNob3VsZCBnbyBhd2F5IHdoZW4gM2Qg
dHJhbnNmb3JtcyBhcmUgZmluYWxpemVkLgogICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFs
ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5oCShyZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwzNiArNDAsNDIgQEAgc3RydWN0IExlbmd0aCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGVuZ3RoKCkKLSAgICAg
ICAgOiBtX3ZhbHVlKDApCisgICAgICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9xdWlyaygwKSwgbV90
eXBlKEF1dG8pLCBtX2lzRmxvYXQoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoKExlbmd0
aFR5cGUgdCkKLSAgICAgICAgOiBtX3ZhbHVlKHQpCisgICAgICAgIDogbV9pbnRWYWx1ZSgwKSwg
bV9xdWlyaygwKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoMCkKICAgICB7CiAgICAgfQogCiAgICAg
TGVuZ3RoKGludCB2LCBMZW5ndGhUeXBlIHQsIGJvb2wgcSA9IGZhbHNlKQotICAgICAgICA6IG1f
dmFsdWUoKHYgKiAxNikgfCAocSA8PCAzKSB8IHQpIC8vIEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYg
dGhlIHBhc3NlZC1pbiB2YWx1ZSBpcyB2ZXJ5IGxhcmdlIQorICAgICAgICA6IG1faW50VmFsdWUo
diksIG1fcXVpcmsocSksIG1fdHlwZSh0KSwgbV9pc0Zsb2F0KDApCiAgICAgewogICAgICAgICBB
U1NFUlQodCAhPSBQZXJjZW50KTsKICAgICB9CiAKICAgICBMZW5ndGgoZG91YmxlIHYsIExlbmd0
aFR5cGUgdCwgYm9vbCBxID0gZmFsc2UpCi0gICAgICAgIDogbV92YWx1ZShzdGF0aWNfY2FzdDxp
bnQ+KHYgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAocSA8PCAzKSB8IHQpCisgICAgICAg
IDogbV9xdWlyayhxKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoMCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCh0ID09IFBlcmNlbnQpOworICAgICAgICBpZiAobV90eXBlID09IFBlcmNlbnQpCisgICAg
ICAgICAgICBtX2ludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rv
cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9pc0Zsb2F0ID0gMTsgICAgICAgICAg
ICAKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAg
ICAgICAgfQogICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBv
KSBjb25zdCB7IHJldHVybiAoZ2V0RmxvYXRWYWx1ZSgpID09IG8uZ2V0RmxvYXRWYWx1ZSgpKSAm
JiAobV90eXBlID09IG8ubV90eXBlKSAmJiAobV9xdWlyayA9PSBvLm1fcXVpcmspOyB9CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gKGdldEZsb2F0
VmFsdWUoKSAhPSBvLmdldEZsb2F0VmFsdWUoKSkgfHwgKG1fdHlwZSAhPSBvLm1fdHlwZSkgfHwg
KG1fcXVpcmsgIT0gby5tX3F1aXJrKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExl
bmd0aCYgbykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvLm1fdmFsdWU7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICE9IG8u
bV92YWx1ZTsgfQotCisgICAgCiAgICAgaW50IHZhbHVlKCkgY29uc3QgewogICAgICAgICBBU1NF
UlQodHlwZSgpICE9IFBlcmNlbnQpOwogICAgICAgICByZXR1cm4gcmF3VmFsdWUoKTsKICAgICB9
CiAKLSAgICBpbnQgcmF3VmFsdWUoKSBjb25zdCB7IHJldHVybiAobV92YWx1ZSAmIH4weEYpIC8g
MTY7IH0KKyAgICBpbnQgcmF3VmFsdWUoKSBjb25zdCB7IHJldHVybiBnZXRJbnRWYWx1ZSgpOyB9
CiAKICAgICBkb3VibGUgcGVyY2VudCgpIGNvbnN0CiAgICAgewpAQCAtNzcsMzUgKzgzLDI5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4ocmF3VmFsdWUoKSkg
LyBwZXJjZW50U2NhbGVGYWN0b3I7CiAgICAgfQogCi0gICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV92YWx1ZSAmIDcpOyB9Ci0gICAg
Ym9vbCBxdWlyaygpIGNvbnN0IHsgcmV0dXJuIChtX3ZhbHVlID4+IDMpICYgMTsgfQorICAgIExl
bmd0aFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExlbmd0aFR5cGU+KG1f
dHlwZSk7IH0KKyAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9xdWlyazsgfQogCiAg
ICAgdm9pZCBzZXRWYWx1ZShMZW5ndGhUeXBlIHQsIGludCB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVCh0ICE9IFBlcmNlbnQpOwotICAgICAgICBzZXRSYXdWYWx1ZSh0LCB2YWx1ZSk7Cisg
ICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCB0KTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJh
d1ZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwg
KG1fdmFsdWUgJiAweDgpIHwgdDsgfQotCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKLSAgICAg
ICAgc2V0UmF3VmFsdWUodmFsdWUpOworICAgICAgICAqdGhpcyA9IExlbmd0aCh2YWx1ZSwgRml4
ZWQpOwogICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoaW50IHZhbHVlKSB7IG1fdmFsdWUg
PSB2YWx1ZSAqIDE2IHwgKG1fdmFsdWUgJiAweEYpOyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKExl
bmd0aFR5cGUgdCwgZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVy
Y2VudCk7Ci0gICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogcGVyY2Vu
dFNjYWxlRmFjdG9yKSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwgdDsKKyAgICAgICAgKnRoaXMg
PSBMZW5ndGgodmFsdWUsIHQpOwogICAgIH0KIAogICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBQZXJjZW50KTsKLSAgICAgICAg
bV92YWx1ZSA9IHN0YXRpY19jYXN0PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICog
MTYgfCAobV92YWx1ZSAmIDB4Rik7CisgICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhl
ZCk7CiAgICAgfQogCiAgICAgLy8gbm90ZTogd29ya3Mgb25seSBmb3IgY2VydGFpbiB0eXBlcywg
cmV0dXJucyB1bmRlZmluZWRMZW5ndGggb3RoZXJ3aXNlCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2Ug
Rml4ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpOwogICAgICAgICAgICAg
Y2FzZSBQZXJjZW50OgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
bWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMCk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CkBA
IC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRlZmluZWQo
KSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgpID09IHVuZGVmaW5lZExlbmd0aDsgfQotICAgIGJv
b2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIShtX3ZhbHVlICYgfjB4Rik7IH0KKyAgICBib29s
IGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFnZXRJbnRWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc1Bv
c2l0aXZlKCkgY29uc3QgeyByZXR1cm4gcmF3VmFsdWUoKSA+IDA7IH0KICAgICBib29sIGlzTmVn
YXRpdmUoKSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgpIDwgMDsgfQogCkBAIC0xODUsMTMgKzE4
NSwzMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKGZyb21QZXJjZW50ICsg
KHRvUGVyY2VudCAtIGZyb21QZXJjZW50KSAqIHByb2dyZXNzLCBQZXJjZW50KTsKICAgICAgICAg
fSAKICAgICAgICAgICAgIAotICAgICAgICBpbnQgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/
IDAgOiBmcm9tLnZhbHVlKCk7Ci0gICAgICAgIGludCB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDog
dmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIExlbmd0aChpbnQoZnJvbVZhbHVlICsgKHRvVmFsdWUg
LSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MpLCByZXN1bHRUeXBlKTsKKyAgICAgICAgZG91YmxlIGZy
b21WYWx1ZSA9IGZyb20uaXNaZXJvKCkgPyAwIDogZnJvbS5nZXRGbG9hdFZhbHVlKCk7CisgICAg
ICAgIGRvdWJsZSB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogZ2V0RmxvYXRWYWx1ZSgpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoKGZyb21WYWx1ZSArICh0b1ZhbHVlIC0gZnJvbVZhbHVlKSAqIHBy
b2dyZXNzLCByZXN1bHRUeXBlKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7
CisgICAgaW50IGdldEludFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzRmxv
YXQpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2Zsb2F0VmFsdWUpOwor
ICAgICAgICByZXR1cm4gbV9pbnRWYWx1ZTsKKyAgICB9CisgICAgCisgICAgZmxvYXQgZ2V0Rmxv
YXRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAg
ICAgcmV0dXJuIG1fZmxvYXRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIG1faW50VmFsdWU7CisgICAg
fQorICAgIAorICAgIHVuaW9uIHsKKyAgICAgICAgaW50IG1faW50VmFsdWU7CisgICAgICAgIGZs
b2F0IG1fZmxvYXRWYWx1ZTsKKyAgICB9OworICAgIGJvb2wgbV9xdWlyazsKKyAgICB1bnNpZ25l
ZCBjaGFyIG1fdHlwZTsKKyAgICBib29sIG1faXNGbG9hdDsKIH07CiAKIFBhc3NPd25BcnJheVB0
cjxMZW5ndGg+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCShyZXZpc2lv
biA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0Ojpy
ZWNhbGNDb2x1bW4oaW50IGUKICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGNlbGxMb2dpY2Fs
V2lkdGggPSBjZWxsLT5zdHlsZU9yQ29sTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXaGF0IGlzIHRoaXMgYXJiaXRyYXJ5IHZhbHVlPwogICAgICAgICAgICAg
ICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5yYXdWYWx1ZSgpID4gMzI3NjApCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFJhd1ZhbHVlKDMyNzYwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoMzI3NjApOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc05lZ2F0aXZlKCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKDApOwogICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNlbGxMb2dpY2FsV2lkdGgudHlwZSgpKSB7CkBAIC0z
NzQsNyArMzc0LDcgQEAgaW50IEF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYQog
ICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxXaWR0aCAtPSBtX2xheW91dFN0cnVjdFtwb3Nd
LmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNl
bnRNaXNzaW5nIC09IHBlcmNlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVyY2Vu
dCA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5l
ZmZlY3RpdmVMb2dpY2FsV2lkdGguc2V0UmF3VmFsdWUoUGVyY2VudCwgcGVyY2VudCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dp
Y2FsV2lkdGguc2V0VmFsdWUoUGVyY2VudCwgcGVyY2VudCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9z
XS5lZmZlY3RpdmVMb2dpY2FsV2lkdGggPSBMZW5ndGgoKTsKICAgICAgICAgICAgICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNw
cAkocmV2aXNpb24gNzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJs
ZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBpbnQgRml4ZWRU
YWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoaW50CiAgICAgICAgICAgICAgICAgICAgIHNwYW5J
bkN1cnJlbnRFZmZlY3RpdmVDb2x1bW4gPSBtX3RhYmxlLT5zcGFuT2ZFZmZDb2woY3VycmVudEVm
ZmVjdGl2ZUNvbHVtbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgo
dy5pc0ZpeGVkKCkgfHwgdy5pc1BlcmNlbnQoKSkgJiYgdy5pc1Bvc2l0aXZlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV93aWR0aFtjdXJyZW50RWZmZWN0aXZlQ29sdW1uXS5zZXRSYXdWYWx1
ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbik7
CisgICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVmZmVjdGl2ZUNvbHVtbl0uc2V0
VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1
bW4pOwogICAgICAgICAgICAgICAgICAgICB1c2VkV2lkdGggKz0gZWZmV2lkdGggKiBzcGFuSW5D
dXJyZW50RWZmZWN0aXZlQ29sdW1uOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBzcGFuIC09IHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW47CkBAIC0xNjcsNyArMTY3LDcg
QEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KGludAogICAgICAgICAgICAg
ICAgICAgICBpbnQgZVNwYW4gPSBtX3RhYmxlLT5zcGFuT2ZFZmZDb2woY0NvbCArIGkpOwogICAg
ICAgICAgICAgICAgICAgICAvLyBPbmx5IHNldCBpZiBubyBjb2wgZWxlbWVudCBoYXMgYWxyZWFk
eSBzZXQgaXQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3dpZHRoW2NDb2wgKyBpXS5pc0F1
dG8oKSAmJiB3LnR5cGUoKSAhPSBBdXRvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3dp
ZHRoW2NDb2wgKyBpXS5zZXRSYXdWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogZVNwYW4g
LyBzcGFuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY0NvbCArIGldLnNldFZh
bHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBlU3BhbiAvIHNwYW4pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlZFdpZHRoICs9IGVmZldpZHRoICogZVNwYW4gLyBzcGFuOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHVzZWRTcGFuICs9IGVTcGFuOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNzk0OTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMi0yMyAgUmlrIENhYmFuaWVyICA8Y2Fi
YW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpeCB0aGF0IGFsbG93cyBmaXhlZCBsZW5ndGggdmFsdWVzIHRvIGJlIGZsb2F0
aW5nIHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MjY5OQorCisgICAgICAgIFRyYW5zaXRpb25zIG5vdyByZXR1cm4gbWF0cmljZXMgaW4gZmxv
YXRpbmcgcG9pbnQuIDIgb2YgdGhlIHRyYW5zaXRpb24gdGVzdHMgd2VyZSBmYWlsaW5nCisgICAg
ICAgIGJlY2F1c2UgdGhleSBleHBlY3RlZCBpbnRlZ2VyIHZhbHVlcy4KKworICAgICAgICAqIHRy
YW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sOgorICAgICAgICAqIHRy
YW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5zaXRpb24uaHRtbDoKKwogMjAxMS0wMi0yMyAgTWlo
YWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LiBSZXZlcnQgaW5jb3JyZWN0IGJhc2VsaW5lIGFkZGVkIGJ5IHI3OTQ3My4KSW5kZXg6IExheW91
dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0
aW9ucy5odG1sCShyZXZpc2lvbiA3ODU4NikKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL21h
dGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiAr
MjQsOSBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgdmFyIHQgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtp
dFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgbWF0cml4
KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAgICB2YXIgeVRyYW5z
bGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotICAgICAgCi0gICAgICB2YXIg
cmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24g
c2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworCSAgdmFyIGMgPSBuZXcgV2Vi
S2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsgICAgICAKKyAgICAgIHZhciByZXN1bHQgPSAo
Yy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBiZSBy
dW5uaW5nLCBzbyB5IDwgMjAwJzsKKwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRy
YW5zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXRh
cmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHJldmlzaW9uIDc4NTg2KQorKysgTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMiArMjMsOCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgdmFy
IHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94
JykpLndlYmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhlIGxhc3QgdmFsdWUgZnJvbSB0
aGUgbWF0cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8oXGQrKVwpJC87Ci0gICAgICB2
YXIgeVRyYW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4ZWModCkpOwotCi0gICAgICB2
YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRp
b24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOworICAgICAgdmFyIGMgPSBu
ZXcgV2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtKTsKKyAgICAgIHZhciByZXN1bHQgPSAo
Yy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBiZSBy
dW5uaW5nLCBzbyB5IDwgMjAwJzsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAKICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84327</attachid>
            <date>2011-03-01 17:01:59 -0800</date>
            <delta_ts>2011-03-03 11:05:58 -0800</delta_ts>
            <desc>Updated patch with version that doesn&apos;t assert in debug mode</desc>
            <filename>patchnew.txt</filename>
            <type>text/plain</type>
            <size>21201</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDMtMDEgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
cmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6cXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNh
bGNDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0
aXZlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6
CisKIDIwMTEtMDMtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4MDA0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzNSw3ICszMzM1LDcgQEAg
dm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyB0aGlzIGlzIG1vc3RseSBib3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2Vy
dGFpbiBydWxlIHRvIHRoZSByZW5kZXJzdHlsZS4uLgogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29s
ICpvayA9IDApCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgYm9vbCB0b0Zsb2F0LCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkK
IHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHlsZSB2YWx1
ZS4gVGhlIG9ubHkgcGxhY2Ugc3R5bGUgaXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0aCBtZWFz
dXJlbWVudHMsIGxpa2UgJ2VtcycgYW5kICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBzdHlsZSBp
cyBvbmx5IHVzZWQKQEAgLTMzNTAsOCArMzM1MCwxMiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpCiAgICAgICAgIGlmICghc3R5bGUgJiYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VY
UyB8fCB0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUykpIHsKICAgICAgICAgICAg
IGlmIChvaykKICAgICAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlm
IChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAg
IGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIGlmIChD
U1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAg
aWYgKHRvRmxvYXQpCisgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSwgRml4ZWQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlw
bGllciksIEZpeGVkKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlm
ICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQpAQCAtMzM2MSw2ICszMzY1
LDE2IEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICB9CiAg
ICAgcmV0dXJuIGw7CiB9CisgICAgCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDAp
Cit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJv
b3RTdHlsZSwgZmFsc2UsIG11bHRpcGxpZXIsIG9rKTsKK30KKworc3RhdGljIExlbmd0aCBjb252
ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLCBib29sICpvayA9IDApCit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRp
dmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVsdGlwbGllciwgb2spOworfQogCiB0
ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0Pgogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURl
Y2xhcmF0aW9ucyhib29sIGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4
KQpAQCAtNDY4MSwxMCArNDY5NSwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50CiAgICAgICAgICAgICBSZWN0KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUtPmdldFJl
Y3RWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFyZWN0KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHJpZ2h0ID0g
Y29udmVydFRvTGVuZ3RoKHJlY3QtPnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVj
dC0+Ym90dG9tKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0g
ICAgICAgICAgICBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHRvcCA9IGNvbnZl
cnRUb0ludExlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHJpZ2h0ID0gY29udmVydFRvSW50TGVuZ3RoKHJlY3Qt
PnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVjdC0+Ym90dG9tKCksIHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBsZWZ0ID0g
Y29udmVydFRvSW50TGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlLCB6b29tRmFjdG9yKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNTU3Myw3ICs1NTg3LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBvayA9
IHRydWU7Ci0gICAgICAgICAgICBMZW5ndGggbCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVW
YWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOworICAgICAgICAgICAg
TGVuZ3RoIGwgPSBjb252ZXJ0VG9JbnRMZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKICAgICAgICAgICAgIGlmIChvaykKICAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KGwpOwogICAgICAgICB9CkBAIC01
NzIxLDEwICs1NzM1LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQKICAgICAgICAgICAgIAogICAgICAgICBEYXNoYm9hcmRSZWdpb24gKmZpcnN0ID0gcmVnaW9u
OwogICAgICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0gY29u
dmVydFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7
Ci0gICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5yaWdo
dCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGJv
dHRvbSA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgo
cmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAg
ICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCks
IG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0
VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
OworICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24t
PmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVu
Z3RoIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQog
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2Fy
ZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKQEAgLTcxODMsMTMgKzcxOTcsMTMgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIExlbmd0aCB0
eCA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3Ro
KDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlv
blR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9w
ZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAg
ICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVsc2UgeyAKLSAgICAgICAg
ICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0
VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAm
b2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5
cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJh
dGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5n
dGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNv
bnZlcnRUb0Zsb2F0TGVuZ3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFj
dG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzIwNywxOSArNzIyMSwxOSBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5
ID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBMZW5ndGggdHogPSBMZW5ndGgo
MCwgRml4ZWQpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9u
VHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3Bl
cmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAg
ICAgICB0eiA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3Jt
VmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNs
YXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0
VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsK
KyAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVl
LCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVs
c2UgeyAKLSAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1
ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAg
ICAgdHggPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxl
LCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFs
dWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRl
WFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5z
Zm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR6ID0gY29udmVydFRvTGVuZ3RoKHRoaXJkVmFsdWUsIHN0
eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNv
bnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvciwg
Jm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVu
Z3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQpAQCAtNzM1MCw3ICs3MzY0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVh
dGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIExlbmd0aCBwID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAo
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgoZmlyc3RWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgcCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAg
ICAgICBwID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0
cmFuc2Zvcm1zIGFyZSBmaW5hbGl6ZWQuCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwg
PSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoLmgJKHJldmlzaW9uIDgwMDQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDM2ICs0MCw0MSBAQCBzdHJ1Y3QgTGVuZ3RoIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMZW5ndGgoKQotICAgICAg
ICA6IG1fdmFsdWUoMCkKKyAgICAgICAgOiAgbV9pbnRWYWx1ZSgwKSwgbV9xdWlyayhmYWxzZSks
IG1fdHlwZShBdXRvKSwgbV9pc0Zsb2F0KGZhbHNlKQogICAgIHsKICAgICB9CiAKICAgICBMZW5n
dGgoTGVuZ3RoVHlwZSB0KQotICAgICAgICA6IG1fdmFsdWUodCkKKyAgICAgICAgOiBtX2ludFZh
bHVlKDApLCBtX3F1aXJrKGZhbHNlKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoZmFsc2UpCiAgICAg
ewogICAgIH0KIAogICAgIExlbmd0aChpbnQgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxz
ZSkKLSAgICAgICAgOiBtX3ZhbHVlKCh2ICogMTYpIHwgKHEgPDwgMykgfCB0KSAvLyBGSVhNRTog
RG9lc24ndCB3b3JrIGlmIHRoZSBwYXNzZWQtaW4gdmFsdWUgaXMgdmVyeSBsYXJnZSEKKyAgICAg
ICAgOiBtX2ludFZhbHVlKHYpLCBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChmYWxz
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0ICE9IFBlcmNlbnQpOwogICAgIH0KIAogICAgIExl
bmd0aChkb3VibGUgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKLSAgICAgICAgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PGludD4odiAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8IChx
IDw8IDMpIHwgdCkKKyAgICAgICAgOiBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChm
YWxzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ID09IFBlcmNlbnQpOworICAgICAgICBpZiAo
bV90eXBlID09IFBlcmNlbnQpCisgICAgICAgICAgICBtX2ludFZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rvcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
bV9pc0Zsb2F0ID0gdHJ1ZTsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9
IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvLm1fdmFs
dWU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlICE9IG8ubV92YWx1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5n
dGgmIG8pIGNvbnN0IHsgcmV0dXJuIChnZXRGbG9hdFZhbHVlKCkgPT0gby5nZXRGbG9hdFZhbHVl
KCkpICYmIChtX3R5cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJrID09IG8ubV9xdWlyayk7IH0K
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0
RmxvYXRWYWx1ZSgpICE9IG8uZ2V0RmxvYXRWYWx1ZSgpKSB8fCAobV90eXBlICE9IG8ubV90eXBl
KSB8fCAobV9xdWlyayAhPSBvLm1fcXVpcmspOyB9CiAKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7
CiAgICAgICAgIEFTU0VSVCh0eXBlKCkgIT0gUGVyY2VudCk7CiAgICAgICAgIHJldHVybiByYXdW
YWx1ZSgpOwogICAgIH0KIAotICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX3Zh
bHVlICYgfjB4RikgLyAxNjsgfQorICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGdl
dEludFZhbHVlKCk7IH0KIAogICAgIGRvdWJsZSBwZXJjZW50KCkgY29uc3QKICAgICB7CkBAIC03
NywzNSArODIsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihyYXdWYWx1ZSgpKSAvIHBlcmNlbnRTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBMZW5ndGhU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhUeXBlPihtX3ZhbHVl
ICYgNyk7IH0KLSAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gKG1fdmFsdWUgPj4gMykg
JiAxOyB9CisgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TGVuZ3RoVHlwZT4obV90eXBlKTsgfQorICAgIGJvb2wgcXVpcmsoKSBjb25zdCB7IHJldHVybiBt
X3F1aXJrOyB9CiAKICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHQgIT0gUGVyY2VudCk7Ci0gICAgICAgIHNldFJhd1ZhbHVl
KHQsIHZhbHVlKTsKKyAgICAgICAgbV90eXBlID0gdDsKKyAgICAgICAgbV9pbnRWYWx1ZSA9IHZh
bHVlOworICAgICAgICBtX2lzRmxvYXQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJh
d1ZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwg
KG1fdmFsdWUgJiAweDgpIHwgdDsgfQotCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKLSAgICAg
ICAgc2V0UmF3VmFsdWUodmFsdWUpOworICAgICAgICBzZXRWYWx1ZShGaXhlZCwgdmFsdWUpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1
ZSAqIDE2IHwgKG1fdmFsdWUgJiAweEYpOyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5
cGUgdCwgZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7
Ci0gICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogcGVyY2VudFNjYWxl
RmFjdG9yKSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwgdDsKKyAgICAgICAgbV90eXBlID0gdDsK
KyAgICAgICAgbV9mbG9hdFZhbHVlID0gdmFsdWU7CisgICAgICAgIG1faXNGbG9hdCA9IHRydWU7
ICAgIAogICAgIH0KIAogICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHR5cGUoKSA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAobV92YWx1ZSAm
IDB4Rik7CisgICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCiAg
ICAgLy8gbm90ZTogd29ya3Mgb25seSBmb3IgY2VydGFpbiB0eXBlcywgcmV0dXJucyB1bmRlZmlu
ZWRMZW5ndGggb3RoZXJ3aXNlCkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpOwogICAgICAgICAgICAgY2FzZSBQZXJjZW50Ogog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJj
ZW50KCkgLyAxMDAuMCk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CkBAIC0xNTUsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVy
biByYXdWYWx1ZSgpID09IHVuZGVmaW5lZExlbmd0aDsgfQotICAgIGJvb2wgaXNaZXJvKCkgY29u
c3QgeyByZXR1cm4gIShtX3ZhbHVlICYgfjB4Rik7IH0KKyAgICBib29sIGlzWmVybygpIGNvbnN0
IHsgcmV0dXJuICFnZXRJbnRWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3Qg
eyByZXR1cm4gcmF3VmFsdWUoKSA+IDA7IH0KICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7
IHJldHVybiByYXdWYWx1ZSgpIDwgMDsgfQogCkBAIC0xODQsMTMgKzE4NiwzMyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKGZyb21QZXJjZW50ICsgKHRvUGVyY2VudCAtIGZy
b21QZXJjZW50KSAqIHByb2dyZXNzLCBQZXJjZW50KTsKICAgICAgICAgfSAKICAgICAgICAgICAg
IAotICAgICAgICBpbnQgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLnZhbHVl
KCk7Ci0gICAgICAgIGludCB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogdmFsdWUoKTsKLSAgICAg
ICAgcmV0dXJuIExlbmd0aChpbnQoZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9tVmFsdWUpICog
cHJvZ3Jlc3MpLCByZXN1bHRUeXBlKTsKKyAgICAgICAgZG91YmxlIGZyb21WYWx1ZSA9IGZyb20u
aXNaZXJvKCkgPyAwIDogZnJvbS52YWx1ZSgpOworICAgICAgICBkb3VibGUgdG9WYWx1ZSA9IGlz
WmVybygpID8gMCA6IHZhbHVlKCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVZhbHVlICsg
KHRvVmFsdWUgLSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MsIHJlc3VsdFR5cGUpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBpbnQgbV92YWx1ZTsKKyAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKG1faXNGbG9hdCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KG1fZmxvYXRWYWx1ZSk7CisgICAgICAgIHJldHVybiBtX2ludFZhbHVlOworICAg
IH0KKworICAgIGZsb2F0IGdldEZsb2F0VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG1faXNGbG9hdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9mbG9hdFZhbHVlOworICAgICAg
ICByZXR1cm4gbV9pbnRWYWx1ZTsKKyAgICB9CisKKyAgICB1bmlvbiB7CisgICAgICAgIGludCBt
X2ludFZhbHVlOworICAgICAgICBmbG9hdCBtX2Zsb2F0VmFsdWU7CisgICAgfTsKKyAgICBib29s
IG1fcXVpcms7CisgICAgdW5zaWduZWQgY2hhciBtX3R5cGU7CisgICAgYm9vbCBtX2lzRmxvYXQ7
CiB9OwogCiBQYXNzT3duQXJyYXlQdHI8TGVuZ3RoPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJp
bmcmLCBpbnQmIGxlbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1Rh
YmxlTGF5b3V0LmNwcAkocmV2aXNpb24gODAwNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2
b2lkIEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKGludCBlCiAgICAgICAgICAgICAgICAg
ICAgIExlbmd0aCBjZWxsTG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0
aCgpOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGlzIGFyYml0cmFy
eSB2YWx1ZT8KICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgucmF3VmFs
dWUoKSA+IDMyNzYwKQotICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5z
ZXRSYXdWYWx1ZSgzMjc2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdp
ZHRoLnNldFZhbHVlKDMyNzYwKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2Fs
V2lkdGguaXNOZWdhdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxX
aWR0aC5zZXRWYWx1ZSgwKTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNh
bFdpZHRoLnR5cGUoKSkgewpAQCAtMzc0LDcgKzM3NCw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6
OmNhbGNFZmZlY3RpdmVMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lkdGgg
LT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGg7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwZXJjZW50TWlzc2luZyAtPSBwZXJjZW50OwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBlcmNlbnQgPiAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFJhd1ZhbHVlKFBl
cmNlbnQsIHBlcmNlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3Ry
dWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFZhbHVlKFBlcmNlbnQsIHBlcmNlbnQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoID0gTGVuZ3RoKCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aXhlZFRhYmxlTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5jcHAJKHJldmlzaW9uIDgwMDQ2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
NyArMTE4LDcgQEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KGludAogICAg
ICAgICAgICAgICAgICAgICBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gbV90YWJsZS0+
c3Bhbk9mRWZmQ29sKGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAoKHcuaXNGaXhlZCgpIHx8IHcuaXNQZXJjZW50KCkpICYmIHcu
aXNQb3NpdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVmZmVj
dGl2ZUNvbHVtbl0uc2V0UmF3VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIHNwYW5JbkN1
cnJlbnRFZmZlY3RpdmVDb2x1bW4pOworICAgICAgICAgICAgICAgICAgICBtX3dpZHRoW2N1cnJl
bnRFZmZlY3RpdmVDb2x1bW5dLnNldFZhbHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBzcGFu
SW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgdXNlZFdpZHRo
ICs9IGVmZldpZHRoICogc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgc3BhbiAtPSBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29s
dW1uOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhB
cnJheShpbnQKICAgICAgICAgICAgICAgICAgICAgaW50IGVTcGFuID0gbV90YWJsZS0+c3Bhbk9m
RWZmQ29sKGNDb2wgKyBpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzZXQgaWYgbm8g
Y29sIGVsZW1lbnQgaGFzIGFscmVhZHkgc2V0IGl0LgogICAgICAgICAgICAgICAgICAgICBpZiAo
bV93aWR0aFtjQ29sICsgaV0uaXNBdXRvKCkgJiYgdy50eXBlKCkgIT0gQXV0bykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbV93aWR0aFtjQ29sICsgaV0uc2V0UmF3VmFsdWUody50eXBlKCks
IHcucmF3VmFsdWUoKSAqIGVTcGFuIC8gc3Bhbik7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3dpZHRoW2NDb2wgKyBpXS5zZXRWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogZVNwYW4g
LyBzcGFuKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRXaWR0aCArPSBlZmZXaWR0aCAq
IGVTcGFuIC8gc3BhbjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB1c2VkU3BhbiArPSBlU3BhbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDY2KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMt
MDEgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVu
Z3RoIHZhbHVlcyB0byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICBUcmFuc2l0aW9ucyBub3cg
cmV0dXJuIG1hdHJpY2VzIGluIGZsb2F0aW5nIHBvaW50LiAyIG9mIHRoZSB0cmFuc2l0aW9uIHRl
c3RzIHdlcmUgZmFpbGluZworICAgICAgICBiZWNhdXNlIHRoZXkgZXhwZWN0ZWQgaW50ZWdlciB2
YWx1ZXMuCisKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlv
bnMuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0
bWw6CisKIDIwMTEtMDMtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGJhc2VsaW5lCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAkocmV2
aXNpb24gODAwNDYpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9y
bS1mdW5jdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDggQEAKIAogICAg
IGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIHZhciB0ID0gd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53ZWJraXRUcmFuc2Zvcm07Ci0g
ICAgICAvLyBncmFiIHRoZSBsYXN0IHZhbHVlIGZyb20gdGhlIG1hdHJpeCgpCi0gICAgICB2YXIg
bGFzdFZhbHVlUkUgPSAvKFxkKylcKSQvOwotICAgICAgdmFyIHlUcmFuc2xhdGUgPSBwYXJzZUlu
dChsYXN0VmFsdWVSRS5leGVjKHQpKTsKLSAgICAgIAotICAgICAgdmFyIHJlc3VsdCA9ICh5VHJh
bnNsYXRlIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBi
ZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKyAgICAgIHZhciBjID0gbmV3IFdlYktpdENTU01hdHJp
eCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jykp
LndlYmtpdFRyYW5zZm9ybSk7ICAgICAgCisgICAgICB2YXIgcmVzdWx0ID0gKGMuZiA8IDIwMCkg
PyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3RpbGwgYmUgcnVubmluZywgc28g
eSA8IDIwMCc7CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJI
VE1MID0gcmVzdWx0OwogCiAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQpJ
bmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5z
aXRpb24uaHRtbAkocmV2aXNpb24gODAwNDYpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9y
ZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEyICsyMyw4
IEBACiAKICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICB7Ci0gICAgICB2YXIgdCA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJh
bnNmb3JtOwotICAgICAgLy8gZ3JhYiB0aGUgbGFzdCB2YWx1ZSBmcm9tIHRoZSBtYXRyaXgoKQot
ICAgICAgdmFyIGxhc3RWYWx1ZVJFID0gLyhcZCspXCkkLzsKLSAgICAgIHZhciB5VHJhbnNsYXRl
ID0gcGFyc2VJbnQobGFzdFZhbHVlUkUuZXhlYyh0KSk7Ci0KLSAgICAgIHZhciByZXN1bHQgPSAo
eVRyYW5zbGF0ZSA8IDIwMCkgPyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3Rp
bGwgYmUgcnVubmluZywgc28geSA8IDIwMCc7CisgICAgICB2YXIgYyA9IG5ldyBXZWJLaXRDU1NN
YXRyaXgod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
eCcpKS53ZWJraXRUcmFuc2Zvcm0pOworICAgICAgdmFyIHJlc3VsdCA9IChjLmYgPCAyMDApID8g
J1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkg
PCAyMDAnOwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84588</attachid>
            <date>2011-03-03 11:05:58 -0800</date>
            <delta_ts>2011-03-03 11:10:32 -0800</delta_ts>
            <desc>Updated patch with version that doesn&apos;t assert in debug mode + fixed style</desc>
            <filename>patchnew.txt</filename>
            <type>text/plain</type>
            <size>21201</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDMtMDEgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
cmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6cXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNh
bGNDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0
aXZlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6
CisKIDIwMTEtMDMtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4MDA0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzNSw3ICszMzM1LDcgQEAg
dm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyB0aGlzIGlzIG1vc3RseSBib3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2Vy
dGFpbiBydWxlIHRvIHRoZSByZW5kZXJzdHlsZS4uLgogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29s
ICpvayA9IDApCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgYm9vbCB0b0Zsb2F0LCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkK
IHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHlsZSB2YWx1
ZS4gVGhlIG9ubHkgcGxhY2Ugc3R5bGUgaXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0aCBtZWFz
dXJlbWVudHMsIGxpa2UgJ2VtcycgYW5kICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBzdHlsZSBp
cyBvbmx5IHVzZWQKQEAgLTMzNTAsOCArMzM1MCwxMiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpCiAgICAgICAgIGlmICghc3R5bGUgJiYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VY
UyB8fCB0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUykpIHsKICAgICAgICAgICAg
IGlmIChvaykKICAgICAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlm
IChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAg
IGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIGlmIChD
U1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAg
aWYgKHRvRmxvYXQpCisgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSwgRml4ZWQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlw
bGllciksIEZpeGVkKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlm
ICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQpAQCAtMzM2MSw2ICszMzY1
LDE2IEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICB9CiAg
ICAgcmV0dXJuIGw7CiB9CisgICAgCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDAp
Cit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJv
b3RTdHlsZSwgZmFsc2UsIG11bHRpcGxpZXIsIG9rKTsKK30KKworc3RhdGljIExlbmd0aCBjb252
ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLCBib29sICpvayA9IDApCit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRp
dmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVsdGlwbGllciwgb2spOworfQogCiB0
ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0Pgogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURl
Y2xhcmF0aW9ucyhib29sIGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4
KQpAQCAtNDY4MSwxMCArNDY5NSwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50CiAgICAgICAgICAgICBSZWN0KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUtPmdldFJl
Y3RWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFyZWN0KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHJpZ2h0ID0g
Y29udmVydFRvTGVuZ3RoKHJlY3QtPnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVj
dC0+Ym90dG9tKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0g
ICAgICAgICAgICBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHRvcCA9IGNvbnZl
cnRUb0ludExlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHJpZ2h0ID0gY29udmVydFRvSW50TGVuZ3RoKHJlY3Qt
PnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVjdC0+Ym90dG9tKCksIHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBsZWZ0ID0g
Y29udmVydFRvSW50TGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlLCB6b29tRmFjdG9yKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNTU3Myw3ICs1NTg3LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBvayA9
IHRydWU7Ci0gICAgICAgICAgICBMZW5ndGggbCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVW
YWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOworICAgICAgICAgICAg
TGVuZ3RoIGwgPSBjb252ZXJ0VG9JbnRMZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKICAgICAgICAgICAgIGlmIChvaykKICAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KGwpOwogICAgICAgICB9CkBAIC01
NzIxLDEwICs1NzM1LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQKICAgICAgICAgICAgIAogICAgICAgICBEYXNoYm9hcmRSZWdpb24gKmZpcnN0ID0gcmVnaW9u
OwogICAgICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0gY29u
dmVydFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7
Ci0gICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5yaWdo
dCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGJv
dHRvbSA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgo
cmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAg
ICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCks
IG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0
VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
OworICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24t
PmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVu
Z3RoIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQog
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2Fy
ZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKQEAgLTcxODMsMTMgKzcxOTcsMTMgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIExlbmd0aCB0
eCA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3Ro
KDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlv
blR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9w
ZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAg
ICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVsc2UgeyAKLSAgICAgICAg
ICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0
VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAm
b2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5
cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJh
dGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5n
dGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNv
bnZlcnRUb0Zsb2F0TGVuZ3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFj
dG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzIwNywxOSArNzIyMSwxOSBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5
ID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBMZW5ndGggdHogPSBMZW5ndGgo
MCwgRml4ZWQpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9u
VHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3Bl
cmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAg
ICAgICB0eiA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3Jt
VmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNs
YXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0
VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsK
KyAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVl
LCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVs
c2UgeyAKLSAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1
ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAg
ICAgdHggPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxl
LCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFs
dWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRl
WFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5z
Zm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR6ID0gY29udmVydFRvTGVuZ3RoKHRoaXJkVmFsdWUsIHN0
eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNv
bnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvciwg
Jm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVu
Z3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQpAQCAtNzM1MCw3ICs3MzY0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVh
dGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIExlbmd0aCBwID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAo
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgoZmlyc3RWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgcCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAg
ICAgICBwID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0
cmFuc2Zvcm1zIGFyZSBmaW5hbGl6ZWQuCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwg
PSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoLmgJKHJldmlzaW9uIDgwMDQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDM2ICs0MCw0MSBAQCBzdHJ1Y3QgTGVuZ3RoIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMZW5ndGgoKQotICAgICAg
ICA6IG1fdmFsdWUoMCkKKyAgICAgICAgOiAgbV9pbnRWYWx1ZSgwKSwgbV9xdWlyayhmYWxzZSks
IG1fdHlwZShBdXRvKSwgbV9pc0Zsb2F0KGZhbHNlKQogICAgIHsKICAgICB9CiAKICAgICBMZW5n
dGgoTGVuZ3RoVHlwZSB0KQotICAgICAgICA6IG1fdmFsdWUodCkKKyAgICAgICAgOiBtX2ludFZh
bHVlKDApLCBtX3F1aXJrKGZhbHNlKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoZmFsc2UpCiAgICAg
ewogICAgIH0KIAogICAgIExlbmd0aChpbnQgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxz
ZSkKLSAgICAgICAgOiBtX3ZhbHVlKCh2ICogMTYpIHwgKHEgPDwgMykgfCB0KSAvLyBGSVhNRTog
RG9lc24ndCB3b3JrIGlmIHRoZSBwYXNzZWQtaW4gdmFsdWUgaXMgdmVyeSBsYXJnZSEKKyAgICAg
ICAgOiBtX2ludFZhbHVlKHYpLCBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChmYWxz
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0ICE9IFBlcmNlbnQpOwogICAgIH0KIAogICAgIExl
bmd0aChkb3VibGUgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKLSAgICAgICAgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PGludD4odiAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8IChx
IDw8IDMpIHwgdCkKKyAgICAgICAgOiBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChm
YWxzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ID09IFBlcmNlbnQpOworICAgICAgICBpZiAo
bV90eXBlID09IFBlcmNlbnQpCisgICAgICAgICAgICBtX2ludFZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rvcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
bV9pc0Zsb2F0ID0gdHJ1ZTsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9
IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvLm1fdmFs
dWU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlICE9IG8ubV92YWx1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5n
dGgmIG8pIGNvbnN0IHsgcmV0dXJuIChnZXRGbG9hdFZhbHVlKCkgPT0gby5nZXRGbG9hdFZhbHVl
KCkpICYmIChtX3R5cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJrID09IG8ubV9xdWlyayk7IH0K
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0
RmxvYXRWYWx1ZSgpICE9IG8uZ2V0RmxvYXRWYWx1ZSgpKSB8fCAobV90eXBlICE9IG8ubV90eXBl
KSB8fCAobV9xdWlyayAhPSBvLm1fcXVpcmspOyB9CiAKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7
CiAgICAgICAgIEFTU0VSVCh0eXBlKCkgIT0gUGVyY2VudCk7CiAgICAgICAgIHJldHVybiByYXdW
YWx1ZSgpOwogICAgIH0KIAotICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX3Zh
bHVlICYgfjB4RikgLyAxNjsgfQorICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGdl
dEludFZhbHVlKCk7IH0KIAogICAgIGRvdWJsZSBwZXJjZW50KCkgY29uc3QKICAgICB7CkBAIC03
NywzNSArODIsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihyYXdWYWx1ZSgpKSAvIHBlcmNlbnRTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBMZW5ndGhU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhUeXBlPihtX3ZhbHVl
ICYgNyk7IH0KLSAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gKG1fdmFsdWUgPj4gMykg
JiAxOyB9CisgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TGVuZ3RoVHlwZT4obV90eXBlKTsgfQorICAgIGJvb2wgcXVpcmsoKSBjb25zdCB7IHJldHVybiBt
X3F1aXJrOyB9CiAKICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHQgIT0gUGVyY2VudCk7Ci0gICAgICAgIHNldFJhd1ZhbHVl
KHQsIHZhbHVlKTsKKyAgICAgICAgbV90eXBlID0gdDsKKyAgICAgICAgbV9pbnRWYWx1ZSA9IHZh
bHVlOworICAgICAgICBtX2lzRmxvYXQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJh
d1ZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwg
KG1fdmFsdWUgJiAweDgpIHwgdDsgfQotCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKLSAgICAg
ICAgc2V0UmF3VmFsdWUodmFsdWUpOworICAgICAgICBzZXRWYWx1ZShGaXhlZCwgdmFsdWUpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1
ZSAqIDE2IHwgKG1fdmFsdWUgJiAweEYpOyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5
cGUgdCwgZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7
Ci0gICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogcGVyY2VudFNjYWxl
RmFjdG9yKSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwgdDsKKyAgICAgICAgbV90eXBlID0gdDsK
KyAgICAgICAgbV9mbG9hdFZhbHVlID0gdmFsdWU7CisgICAgICAgIG1faXNGbG9hdCA9IHRydWU7
ICAgIAogICAgIH0KIAogICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHR5cGUoKSA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAobV92YWx1ZSAm
IDB4Rik7CisgICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCiAg
ICAgLy8gbm90ZTogd29ya3Mgb25seSBmb3IgY2VydGFpbiB0eXBlcywgcmV0dXJucyB1bmRlZmlu
ZWRMZW5ndGggb3RoZXJ3aXNlCkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpOwogICAgICAgICAgICAgY2FzZSBQZXJjZW50Ogog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJj
ZW50KCkgLyAxMDAuMCk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CkBAIC0xNTUsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVy
biByYXdWYWx1ZSgpID09IHVuZGVmaW5lZExlbmd0aDsgfQotICAgIGJvb2wgaXNaZXJvKCkgY29u
c3QgeyByZXR1cm4gIShtX3ZhbHVlICYgfjB4Rik7IH0KKyAgICBib29sIGlzWmVybygpIGNvbnN0
IHsgcmV0dXJuICFnZXRJbnRWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3Qg
eyByZXR1cm4gcmF3VmFsdWUoKSA+IDA7IH0KICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7
IHJldHVybiByYXdWYWx1ZSgpIDwgMDsgfQogCkBAIC0xODQsMTMgKzE4NiwzMyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKGZyb21QZXJjZW50ICsgKHRvUGVyY2VudCAtIGZy
b21QZXJjZW50KSAqIHByb2dyZXNzLCBQZXJjZW50KTsKICAgICAgICAgfSAKICAgICAgICAgICAg
IAotICAgICAgICBpbnQgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLnZhbHVl
KCk7Ci0gICAgICAgIGludCB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogdmFsdWUoKTsKLSAgICAg
ICAgcmV0dXJuIExlbmd0aChpbnQoZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9tVmFsdWUpICog
cHJvZ3Jlc3MpLCByZXN1bHRUeXBlKTsKKyAgICAgICAgZG91YmxlIGZyb21WYWx1ZSA9IGZyb20u
aXNaZXJvKCkgPyAwIDogZnJvbS52YWx1ZSgpOworICAgICAgICBkb3VibGUgdG9WYWx1ZSA9IGlz
WmVybygpID8gMCA6IHZhbHVlKCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVZhbHVlICsg
KHRvVmFsdWUgLSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MsIHJlc3VsdFR5cGUpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBpbnQgbV92YWx1ZTsKKyAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKG1faXNGbG9hdCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KG1fZmxvYXRWYWx1ZSk7CisgICAgICAgIHJldHVybiBtX2ludFZhbHVlOworICAg
IH0KKworICAgIGZsb2F0IGdldEZsb2F0VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG1faXNGbG9hdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9mbG9hdFZhbHVlOworICAgICAg
ICByZXR1cm4gbV9pbnRWYWx1ZTsKKyAgICB9CisKKyAgICB1bmlvbiB7CisgICAgICAgIGludCBt
X2ludFZhbHVlOworICAgICAgICBmbG9hdCBtX2Zsb2F0VmFsdWU7CisgICAgfTsKKyAgICBib29s
IG1fcXVpcms7CisgICAgdW5zaWduZWQgY2hhciBtX3R5cGU7CisgICAgYm9vbCBtX2lzRmxvYXQ7
CiB9OwogCiBQYXNzT3duQXJyYXlQdHI8TGVuZ3RoPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJp
bmcmLCBpbnQmIGxlbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1Rh
YmxlTGF5b3V0LmNwcAkocmV2aXNpb24gODAwNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2
b2lkIEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKGludCBlCiAgICAgICAgICAgICAgICAg
ICAgIExlbmd0aCBjZWxsTG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0
aCgpOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGlzIGFyYml0cmFy
eSB2YWx1ZT8KICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgucmF3VmFs
dWUoKSA+IDMyNzYwKQotICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5z
ZXRSYXdWYWx1ZSgzMjc2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdp
ZHRoLnNldFZhbHVlKDMyNzYwKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2Fs
V2lkdGguaXNOZWdhdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxX
aWR0aC5zZXRWYWx1ZSgwKTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNh
bFdpZHRoLnR5cGUoKSkgewpAQCAtMzc0LDcgKzM3NCw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6
OmNhbGNFZmZlY3RpdmVMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lkdGgg
LT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGg7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwZXJjZW50TWlzc2luZyAtPSBwZXJjZW50OwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBlcmNlbnQgPiAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFJhd1ZhbHVlKFBl
cmNlbnQsIHBlcmNlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3Ry
dWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFZhbHVlKFBlcmNlbnQsIHBlcmNlbnQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoID0gTGVuZ3RoKCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aXhlZFRhYmxlTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5jcHAJKHJldmlzaW9uIDgwMDQ2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
NyArMTE4LDcgQEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KGludAogICAg
ICAgICAgICAgICAgICAgICBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gbV90YWJsZS0+
c3Bhbk9mRWZmQ29sKGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAoKHcuaXNGaXhlZCgpIHx8IHcuaXNQZXJjZW50KCkpICYmIHcu
aXNQb3NpdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVmZmVj
dGl2ZUNvbHVtbl0uc2V0UmF3VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIHNwYW5JbkN1
cnJlbnRFZmZlY3RpdmVDb2x1bW4pOworICAgICAgICAgICAgICAgICAgICBtX3dpZHRoW2N1cnJl
bnRFZmZlY3RpdmVDb2x1bW5dLnNldFZhbHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBzcGFu
SW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgdXNlZFdpZHRo
ICs9IGVmZldpZHRoICogc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgc3BhbiAtPSBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29s
dW1uOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhB
cnJheShpbnQKICAgICAgICAgICAgICAgICAgICAgaW50IGVTcGFuID0gbV90YWJsZS0+c3Bhbk9m
RWZmQ29sKGNDb2wgKyBpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzZXQgaWYgbm8g
Y29sIGVsZW1lbnQgaGFzIGFscmVhZHkgc2V0IGl0LgogICAgICAgICAgICAgICAgICAgICBpZiAo
bV93aWR0aFtjQ29sICsgaV0uaXNBdXRvKCkgJiYgdy50eXBlKCkgIT0gQXV0bykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbV93aWR0aFtjQ29sICsgaV0uc2V0UmF3VmFsdWUody50eXBlKCks
IHcucmF3VmFsdWUoKSAqIGVTcGFuIC8gc3Bhbik7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3dpZHRoW2NDb2wgKyBpXS5zZXRWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogZVNwYW4g
LyBzcGFuKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRXaWR0aCArPSBlZmZXaWR0aCAq
IGVTcGFuIC8gc3BhbjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB1c2VkU3BhbiArPSBlU3BhbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDY2KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMt
MDEgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVu
Z3RoIHZhbHVlcyB0byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICBUcmFuc2l0aW9ucyBub3cg
cmV0dXJuIG1hdHJpY2VzIGluIGZsb2F0aW5nIHBvaW50LiAyIG9mIHRoZSB0cmFuc2l0aW9uIHRl
c3RzIHdlcmUgZmFpbGluZworICAgICAgICBiZWNhdXNlIHRoZXkgZXhwZWN0ZWQgaW50ZWdlciB2
YWx1ZXMuCisKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlv
bnMuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0
bWw6CisKIDIwMTEtMDMtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGJhc2VsaW5lCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAkocmV2
aXNpb24gODAwNDYpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9y
bS1mdW5jdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDggQEAKIAogICAg
IGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIHZhciB0ID0gd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53ZWJraXRUcmFuc2Zvcm07Ci0g
ICAgICAvLyBncmFiIHRoZSBsYXN0IHZhbHVlIGZyb20gdGhlIG1hdHJpeCgpCi0gICAgICB2YXIg
bGFzdFZhbHVlUkUgPSAvKFxkKylcKSQvOwotICAgICAgdmFyIHlUcmFuc2xhdGUgPSBwYXJzZUlu
dChsYXN0VmFsdWVSRS5leGVjKHQpKTsKLSAgICAgIAotICAgICAgdmFyIHJlc3VsdCA9ICh5VHJh
bnNsYXRlIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBi
ZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKyAgICAgIHZhciBjID0gbmV3IFdlYktpdENTU01hdHJp
eCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jykp
LndlYmtpdFRyYW5zZm9ybSk7ICAgICAgCisgICAgICB2YXIgcmVzdWx0ID0gKGMuZiA8IDIwMCkg
PyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3RpbGwgYmUgcnVubmluZywgc28g
eSA8IDIwMCc7CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJI
VE1MID0gcmVzdWx0OwogCiAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQpJ
bmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5z
aXRpb24uaHRtbAkocmV2aXNpb24gODAwNDYpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9y
ZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEyICsyMyw4
IEBACiAKICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICB7Ci0gICAgICB2YXIgdCA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJh
bnNmb3JtOwotICAgICAgLy8gZ3JhYiB0aGUgbGFzdCB2YWx1ZSBmcm9tIHRoZSBtYXRyaXgoKQot
ICAgICAgdmFyIGxhc3RWYWx1ZVJFID0gLyhcZCspXCkkLzsKLSAgICAgIHZhciB5VHJhbnNsYXRl
ID0gcGFyc2VJbnQobGFzdFZhbHVlUkUuZXhlYyh0KSk7Ci0KLSAgICAgIHZhciByZXN1bHQgPSAo
eVRyYW5zbGF0ZSA8IDIwMCkgPyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3Rp
bGwgYmUgcnVubmluZywgc28geSA8IDIwMCc7CisgICAgICB2YXIgYyA9IG5ldyBXZWJLaXRDU1NN
YXRyaXgod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
eCcpKS53ZWJraXRUcmFuc2Zvcm0pOworICAgICAgdmFyIHJlc3VsdCA9IChjLmYgPCAyMDApID8g
J1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkg
PCAyMDAnOwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>84591</attachid>
            <date>2011-03-03 11:10:32 -0800</date>
            <delta_ts>2011-03-03 13:10:19 -0800</delta_ts>
            <desc>Updated patch with version that doesn&apos;t assert in debug mode + fixed style</desc>
            <filename>patchnew.txt</filename>
            <type>text/plain</type>
            <size>21201</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDMtMDEgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
cmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6cXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNh
bGNDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0
aXZlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6
CisKIDIwMTEtMDMtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4MDA0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzNSw3ICszMzM1LDcgQEAg
dm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyB0aGlzIGlzIG1vc3RseSBib3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2Vy
dGFpbiBydWxlIHRvIHRoZSByZW5kZXJzdHlsZS4uLgogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29s
ICpvayA9IDApCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgYm9vbCB0b0Zsb2F0LCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkK
IHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHlsZSB2YWx1
ZS4gVGhlIG9ubHkgcGxhY2Ugc3R5bGUgaXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0aCBtZWFz
dXJlbWVudHMsIGxpa2UgJ2VtcycgYW5kICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBzdHlsZSBp
cyBvbmx5IHVzZWQKQEAgLTMzNTAsOCArMzM1MCwxMiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpCiAgICAgICAgIGlmICghc3R5bGUgJiYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VY
UyB8fCB0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUykpIHsKICAgICAgICAgICAg
IGlmIChvaykKICAgICAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlm
IChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAg
IGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIGlmIChD
U1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAg
aWYgKHRvRmxvYXQpCisgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSwgRml4ZWQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlw
bGllciksIEZpeGVkKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlm
ICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQpAQCAtMzM2MSw2ICszMzY1
LDE2IEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICB9CiAg
ICAgcmV0dXJuIGw7CiB9CisgICAgCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDAp
Cit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJv
b3RTdHlsZSwgZmFsc2UsIG11bHRpcGxpZXIsIG9rKTsKK30KKworc3RhdGljIExlbmd0aCBjb252
ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLCBib29sICpvayA9IDApCit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRp
dmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVsdGlwbGllciwgb2spOworfQogCiB0
ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0Pgogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURl
Y2xhcmF0aW9ucyhib29sIGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4
KQpAQCAtNDY4MSwxMCArNDY5NSwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50CiAgICAgICAgICAgICBSZWN0KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUtPmdldFJl
Y3RWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFyZWN0KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHJpZ2h0ID0g
Y29udmVydFRvTGVuZ3RoKHJlY3QtPnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVj
dC0+Ym90dG9tKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0g
ICAgICAgICAgICBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHRvcCA9IGNvbnZl
cnRUb0ludExlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHJpZ2h0ID0gY29udmVydFRvSW50TGVuZ3RoKHJlY3Qt
PnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVjdC0+Ym90dG9tKCksIHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBsZWZ0ID0g
Y29udmVydFRvSW50TGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlLCB6b29tRmFjdG9yKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNTU3Myw3ICs1NTg3LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBvayA9
IHRydWU7Ci0gICAgICAgICAgICBMZW5ndGggbCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVW
YWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOworICAgICAgICAgICAg
TGVuZ3RoIGwgPSBjb252ZXJ0VG9JbnRMZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKICAgICAgICAgICAgIGlmIChvaykKICAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KGwpOwogICAgICAgICB9CkBAIC01
NzIxLDEwICs1NzM1LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQKICAgICAgICAgICAgIAogICAgICAgICBEYXNoYm9hcmRSZWdpb24gKmZpcnN0ID0gcmVnaW9u
OwogICAgICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0gY29u
dmVydFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7
Ci0gICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5yaWdo
dCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGJv
dHRvbSA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgo
cmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAg
ICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCks
IG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0
VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
OworICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24t
PmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVu
Z3RoIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQog
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2Fy
ZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKQEAgLTcxODMsMTMgKzcxOTcsMTMgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIExlbmd0aCB0
eCA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3Ro
KDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlv
blR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9w
ZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAg
ICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVsc2UgeyAKLSAgICAgICAg
ICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0
VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAm
b2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5
cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJh
dGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5n
dGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNv
bnZlcnRUb0Zsb2F0TGVuZ3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFj
dG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzIwNywxOSArNzIyMSwxOSBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5
ID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBMZW5ndGggdHogPSBMZW5ndGgo
MCwgRml4ZWQpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9u
VHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3Bl
cmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAg
ICAgICB0eiA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3Jt
VmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNs
YXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0
VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsK
KyAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVl
LCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVs
c2UgeyAKLSAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1
ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAg
ICAgdHggPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxl
LCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFs
dWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRl
WFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5z
Zm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR6ID0gY29udmVydFRvTGVuZ3RoKHRoaXJkVmFsdWUsIHN0
eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNv
bnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvciwg
Jm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVu
Z3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQpAQCAtNzM1MCw3ICs3MzY0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVh
dGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIExlbmd0aCBwID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAo
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgoZmlyc3RWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgcCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAg
ICAgICBwID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0
cmFuc2Zvcm1zIGFyZSBmaW5hbGl6ZWQuCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwg
PSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoLmgJKHJldmlzaW9uIDgwMDQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDM2ICs0MCw0MSBAQCBzdHJ1Y3QgTGVuZ3RoIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMZW5ndGgoKQotICAgICAg
ICA6IG1fdmFsdWUoMCkKKyAgICAgICAgOiAgbV9pbnRWYWx1ZSgwKSwgbV9xdWlyayhmYWxzZSks
IG1fdHlwZShBdXRvKSwgbV9pc0Zsb2F0KGZhbHNlKQogICAgIHsKICAgICB9CiAKICAgICBMZW5n
dGgoTGVuZ3RoVHlwZSB0KQotICAgICAgICA6IG1fdmFsdWUodCkKKyAgICAgICAgOiBtX2ludFZh
bHVlKDApLCBtX3F1aXJrKGZhbHNlKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoZmFsc2UpCiAgICAg
ewogICAgIH0KIAogICAgIExlbmd0aChpbnQgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxz
ZSkKLSAgICAgICAgOiBtX3ZhbHVlKCh2ICogMTYpIHwgKHEgPDwgMykgfCB0KSAvLyBGSVhNRTog
RG9lc24ndCB3b3JrIGlmIHRoZSBwYXNzZWQtaW4gdmFsdWUgaXMgdmVyeSBsYXJnZSEKKyAgICAg
ICAgOiBtX2ludFZhbHVlKHYpLCBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChmYWxz
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0ICE9IFBlcmNlbnQpOwogICAgIH0KIAogICAgIExl
bmd0aChkb3VibGUgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKLSAgICAgICAgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PGludD4odiAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8IChx
IDw8IDMpIHwgdCkKKyAgICAgICAgOiBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChm
YWxzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ID09IFBlcmNlbnQpOworICAgICAgICBpZiAo
bV90eXBlID09IFBlcmNlbnQpCisgICAgICAgICAgICBtX2ludFZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50Pih2KnBlcmNlbnRTY2FsZUZhY3Rvcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
bV9pc0Zsb2F0ID0gdHJ1ZTsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9
IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKKyAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvLm1fdmFs
dWU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlICE9IG8ubV92YWx1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5n
dGgmIG8pIGNvbnN0IHsgcmV0dXJuIChnZXRGbG9hdFZhbHVlKCkgPT0gby5nZXRGbG9hdFZhbHVl
KCkpICYmIChtX3R5cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJrID09IG8ubV9xdWlyayk7IH0K
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0
RmxvYXRWYWx1ZSgpICE9IG8uZ2V0RmxvYXRWYWx1ZSgpKSB8fCAobV90eXBlICE9IG8ubV90eXBl
KSB8fCAobV9xdWlyayAhPSBvLm1fcXVpcmspOyB9CiAKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7
CiAgICAgICAgIEFTU0VSVCh0eXBlKCkgIT0gUGVyY2VudCk7CiAgICAgICAgIHJldHVybiByYXdW
YWx1ZSgpOwogICAgIH0KIAotICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX3Zh
bHVlICYgfjB4RikgLyAxNjsgfQorICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGdl
dEludFZhbHVlKCk7IH0KIAogICAgIGRvdWJsZSBwZXJjZW50KCkgY29uc3QKICAgICB7CkBAIC03
NywzNSArODIsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihyYXdWYWx1ZSgpKSAvIHBlcmNlbnRTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBMZW5ndGhU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhUeXBlPihtX3ZhbHVl
ICYgNyk7IH0KLSAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gKG1fdmFsdWUgPj4gMykg
JiAxOyB9CisgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TGVuZ3RoVHlwZT4obV90eXBlKTsgfQorICAgIGJvb2wgcXVpcmsoKSBjb25zdCB7IHJldHVybiBt
X3F1aXJrOyB9CiAKICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHQgIT0gUGVyY2VudCk7Ci0gICAgICAgIHNldFJhd1ZhbHVl
KHQsIHZhbHVlKTsKKyAgICAgICAgbV90eXBlID0gdDsKKyAgICAgICAgbV9pbnRWYWx1ZSA9IHZh
bHVlOworICAgICAgICBtX2lzRmxvYXQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJh
d1ZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwg
KG1fdmFsdWUgJiAweDgpIHwgdDsgfQotCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKLSAgICAg
ICAgc2V0UmF3VmFsdWUodmFsdWUpOworICAgICAgICBzZXRWYWx1ZShGaXhlZCwgdmFsdWUpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1
ZSAqIDE2IHwgKG1fdmFsdWUgJiAweEYpOyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5
cGUgdCwgZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7
Ci0gICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogcGVyY2VudFNjYWxl
RmFjdG9yKSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwgdDsKKyAgICAgICAgbV90eXBlID0gdDsK
KyAgICAgICAgbV9mbG9hdFZhbHVlID0gdmFsdWU7CisgICAgICAgIG1faXNGbG9hdCA9IHRydWU7
ICAgIAogICAgIH0KIAogICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHR5cGUoKSA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAobV92YWx1ZSAm
IDB4Rik7CisgICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCiAg
ICAgLy8gbm90ZTogd29ya3Mgb25seSBmb3IgY2VydGFpbiB0eXBlcywgcmV0dXJucyB1bmRlZmlu
ZWRMZW5ndGggb3RoZXJ3aXNlCkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpOwogICAgICAgICAgICAgY2FzZSBQZXJjZW50Ogog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJj
ZW50KCkgLyAxMDAuMCk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CkBAIC0xNTUsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVy
biByYXdWYWx1ZSgpID09IHVuZGVmaW5lZExlbmd0aDsgfQotICAgIGJvb2wgaXNaZXJvKCkgY29u
c3QgeyByZXR1cm4gIShtX3ZhbHVlICYgfjB4Rik7IH0KKyAgICBib29sIGlzWmVybygpIGNvbnN0
IHsgcmV0dXJuICFnZXRJbnRWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3Qg
eyByZXR1cm4gcmF3VmFsdWUoKSA+IDA7IH0KICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7
IHJldHVybiByYXdWYWx1ZSgpIDwgMDsgfQogCkBAIC0xODQsMTMgKzE4NiwzMyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKGZyb21QZXJjZW50ICsgKHRvUGVyY2VudCAtIGZy
b21QZXJjZW50KSAqIHByb2dyZXNzLCBQZXJjZW50KTsKICAgICAgICAgfSAKICAgICAgICAgICAg
IAotICAgICAgICBpbnQgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLnZhbHVl
KCk7Ci0gICAgICAgIGludCB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogdmFsdWUoKTsKLSAgICAg
ICAgcmV0dXJuIExlbmd0aChpbnQoZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9tVmFsdWUpICog
cHJvZ3Jlc3MpLCByZXN1bHRUeXBlKTsKKyAgICAgICAgZG91YmxlIGZyb21WYWx1ZSA9IGZyb20u
aXNaZXJvKCkgPyAwIDogZnJvbS52YWx1ZSgpOworICAgICAgICBkb3VibGUgdG9WYWx1ZSA9IGlz
WmVybygpID8gMCA6IHZhbHVlKCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVZhbHVlICsg
KHRvVmFsdWUgLSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MsIHJlc3VsdFR5cGUpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBpbnQgbV92YWx1ZTsKKyAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKG1faXNGbG9hdCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KG1fZmxvYXRWYWx1ZSk7CisgICAgICAgIHJldHVybiBtX2ludFZhbHVlOworICAg
IH0KKworICAgIGZsb2F0IGdldEZsb2F0VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG1faXNGbG9hdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9mbG9hdFZhbHVlOworICAgICAg
ICByZXR1cm4gbV9pbnRWYWx1ZTsKKyAgICB9CisKKyAgICB1bmlvbiB7CisgICAgICAgIGludCBt
X2ludFZhbHVlOworICAgICAgICBmbG9hdCBtX2Zsb2F0VmFsdWU7CisgICAgfTsKKyAgICBib29s
IG1fcXVpcms7CisgICAgdW5zaWduZWQgY2hhciBtX3R5cGU7CisgICAgYm9vbCBtX2lzRmxvYXQ7
CiB9OwogCiBQYXNzT3duQXJyYXlQdHI8TGVuZ3RoPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJp
bmcmLCBpbnQmIGxlbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1Rh
YmxlTGF5b3V0LmNwcAkocmV2aXNpb24gODAwNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2
b2lkIEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKGludCBlCiAgICAgICAgICAgICAgICAg
ICAgIExlbmd0aCBjZWxsTG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0
aCgpOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGlzIGFyYml0cmFy
eSB2YWx1ZT8KICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgucmF3VmFs
dWUoKSA+IDMyNzYwKQotICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5z
ZXRSYXdWYWx1ZSgzMjc2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdp
ZHRoLnNldFZhbHVlKDMyNzYwKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2Fs
V2lkdGguaXNOZWdhdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxX
aWR0aC5zZXRWYWx1ZSgwKTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNh
bFdpZHRoLnR5cGUoKSkgewpAQCAtMzc0LDcgKzM3NCw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6
OmNhbGNFZmZlY3RpdmVMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lkdGgg
LT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGg7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwZXJjZW50TWlzc2luZyAtPSBwZXJjZW50OwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBlcmNlbnQgPiAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFJhd1ZhbHVlKFBl
cmNlbnQsIHBlcmNlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3Ry
dWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFZhbHVlKFBlcmNlbnQsIHBlcmNlbnQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoID0gTGVuZ3RoKCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aXhlZFRhYmxlTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5jcHAJKHJldmlzaW9uIDgwMDQ2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
NyArMTE4LDcgQEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KGludAogICAg
ICAgICAgICAgICAgICAgICBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gbV90YWJsZS0+
c3Bhbk9mRWZmQ29sKGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAoKHcuaXNGaXhlZCgpIHx8IHcuaXNQZXJjZW50KCkpICYmIHcu
aXNQb3NpdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVmZmVj
dGl2ZUNvbHVtbl0uc2V0UmF3VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIHNwYW5JbkN1
cnJlbnRFZmZlY3RpdmVDb2x1bW4pOworICAgICAgICAgICAgICAgICAgICBtX3dpZHRoW2N1cnJl
bnRFZmZlY3RpdmVDb2x1bW5dLnNldFZhbHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBzcGFu
SW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgdXNlZFdpZHRo
ICs9IGVmZldpZHRoICogc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgc3BhbiAtPSBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29s
dW1uOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhB
cnJheShpbnQKICAgICAgICAgICAgICAgICAgICAgaW50IGVTcGFuID0gbV90YWJsZS0+c3Bhbk9m
RWZmQ29sKGNDb2wgKyBpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzZXQgaWYgbm8g
Y29sIGVsZW1lbnQgaGFzIGFscmVhZHkgc2V0IGl0LgogICAgICAgICAgICAgICAgICAgICBpZiAo
bV93aWR0aFtjQ29sICsgaV0uaXNBdXRvKCkgJiYgdy50eXBlKCkgIT0gQXV0bykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbV93aWR0aFtjQ29sICsgaV0uc2V0UmF3VmFsdWUody50eXBlKCks
IHcucmF3VmFsdWUoKSAqIGVTcGFuIC8gc3Bhbik7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3dpZHRoW2NDb2wgKyBpXS5zZXRWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogZVNwYW4g
LyBzcGFuKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRXaWR0aCArPSBlZmZXaWR0aCAq
IGVTcGFuIC8gc3BhbjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB1c2VkU3BhbiArPSBlU3BhbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDY2KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMt
MDEgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVu
Z3RoIHZhbHVlcyB0byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICBUcmFuc2l0aW9ucyBub3cg
cmV0dXJuIG1hdHJpY2VzIGluIGZsb2F0aW5nIHBvaW50LiAyIG9mIHRoZSB0cmFuc2l0aW9uIHRl
c3RzIHdlcmUgZmFpbGluZworICAgICAgICBiZWNhdXNlIHRoZXkgZXhwZWN0ZWQgaW50ZWdlciB2
YWx1ZXMuCisKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlv
bnMuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0
bWw6CisKIDIwMTEtMDMtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGJhc2VsaW5lCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAkocmV2
aXNpb24gODAwNDYpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9y
bS1mdW5jdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDggQEAKIAogICAg
IGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIHZhciB0ID0gd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53ZWJraXRUcmFuc2Zvcm07Ci0g
ICAgICAvLyBncmFiIHRoZSBsYXN0IHZhbHVlIGZyb20gdGhlIG1hdHJpeCgpCi0gICAgICB2YXIg
bGFzdFZhbHVlUkUgPSAvKFxkKylcKSQvOwotICAgICAgdmFyIHlUcmFuc2xhdGUgPSBwYXJzZUlu
dChsYXN0VmFsdWVSRS5leGVjKHQpKTsKLSAgICAgIAotICAgICAgdmFyIHJlc3VsdCA9ICh5VHJh
bnNsYXRlIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBi
ZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKyAgICAgIHZhciBjID0gbmV3IFdlYktpdENTU01hdHJp
eCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jykp
LndlYmtpdFRyYW5zZm9ybSk7ICAgICAgCisgICAgICB2YXIgcmVzdWx0ID0gKGMuZiA8IDIwMCkg
PyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3RpbGwgYmUgcnVubmluZywgc28g
eSA8IDIwMCc7CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJI
VE1MID0gcmVzdWx0OwogCiAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQpJ
bmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5z
aXRpb24uaHRtbAkocmV2aXNpb24gODAwNDYpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9y
ZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEyICsyMyw4
IEBACiAKICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICB7Ci0gICAgICB2YXIgdCA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJh
bnNmb3JtOwotICAgICAgLy8gZ3JhYiB0aGUgbGFzdCB2YWx1ZSBmcm9tIHRoZSBtYXRyaXgoKQot
ICAgICAgdmFyIGxhc3RWYWx1ZVJFID0gLyhcZCspXCkkLzsKLSAgICAgIHZhciB5VHJhbnNsYXRl
ID0gcGFyc2VJbnQobGFzdFZhbHVlUkUuZXhlYyh0KSk7Ci0KLSAgICAgIHZhciByZXN1bHQgPSAo
eVRyYW5zbGF0ZSA8IDIwMCkgPyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91bGQgc3Rp
bGwgYmUgcnVubmluZywgc28geSA8IDIwMCc7CisgICAgICB2YXIgYyA9IG5ldyBXZWJLaXRDU1NN
YXRyaXgod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
eCcpKS53ZWJraXRUcmFuc2Zvcm0pOworICAgICAgdmFyIHJlc3VsdCA9IChjLmYgPCAyMDApID8g
J1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkg
PCAyMDAnOwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84594</attachid>
            <date>2011-03-03 11:15:01 -0800</date>
            <delta_ts>2011-03-09 16:10:22 -0800</delta_ts>
            <desc>Updated patch with version that doesn&apos;t assert in debug mode + fixed style</desc>
            <filename>newpatch.txt</filename>
            <type>text/plain</type>
            <size>21299</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDMtMDEgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
cmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6cXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNh
bGNDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0
aXZlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6
CisKIDIwMTEtMDMtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4MDA0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzNSw3ICszMzM1LDcgQEAg
dm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyB0aGlzIGlzIG1vc3RseSBib3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2Vy
dGFpbiBydWxlIHRvIHRoZSByZW5kZXJzdHlsZS4uLgogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29s
ICpvayA9IDApCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgYm9vbCB0b0Zsb2F0LCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkK
IHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHlsZSB2YWx1
ZS4gVGhlIG9ubHkgcGxhY2Ugc3R5bGUgaXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0aCBtZWFz
dXJlbWVudHMsIGxpa2UgJ2VtcycgYW5kICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBzdHlsZSBp
cyBvbmx5IHVzZWQKQEAgLTMzNTAsOCArMzM1MCwxMiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0xlbmd0aChDU1NQcmltaXRpCiAgICAgICAgIGlmICghc3R5bGUgJiYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VY
UyB8fCB0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUykpIHsKICAgICAgICAgICAg
IGlmIChvaykKICAgICAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlm
IChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAg
IGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIGlmIChD
U1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAg
aWYgKHRvRmxvYXQpCisgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSwgRml4ZWQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlw
bGllciksIEZpeGVkKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlm
ICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQpAQCAtMzM2MSw2ICszMzY1
LDE2IEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICB9CiAg
ICAgcmV0dXJuIGw7CiB9CisgICAgCitzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDAp
Cit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJv
b3RTdHlsZSwgZmFsc2UsIG11bHRpcGxpZXIsIG9rKTsKK30KKworc3RhdGljIExlbmd0aCBjb252
ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLCBib29sICpvayA9IDApCit7CisgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRp
dmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVsdGlwbGllciwgb2spOworfQogCiB0
ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0Pgogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURl
Y2xhcmF0aW9ucyhib29sIGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4
KQpAQCAtNDY4MSwxMCArNDY5NSwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50CiAgICAgICAgICAgICBSZWN0KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUtPmdldFJl
Y3RWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFyZWN0KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHJpZ2h0ID0g
Y29udmVydFRvTGVuZ3RoKHJlY3QtPnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVj
dC0+Ym90dG9tKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0g
ICAgICAgICAgICBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHRvcCA9IGNvbnZl
cnRUb0ludExlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHJpZ2h0ID0gY29udmVydFRvSW50TGVuZ3RoKHJlY3Qt
PnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVjdC0+Ym90dG9tKCksIHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBsZWZ0ID0g
Y29udmVydFRvSW50TGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlLCB6b29tRmFjdG9yKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNTU3Myw5ICs1NTg3LDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBvayA9
IHRydWU7Ci0gICAgICAgICAgICBMZW5ndGggbCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVW
YWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOworICAgICAgICAgICAg
TGVuZ3RoIG1hcnF1ZWVMZW5ndGggPSBjb252ZXJ0VG9JbnRMZW5ndGgocHJpbWl0aXZlVmFsdWUs
IHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKICAgICAgICAgICAgIGlmIChv
aykKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KGwpOworICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQobWFycXVlZUxlbmd0aCk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU3MjEsMTAgKzU3MzUsMTAg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAg
CiAgICAgICAgIERhc2hib2FyZFJlZ2lvbiAqZmlyc3QgPSByZWdpb247CiAgICAgICAgIHdoaWxl
IChyZWdpb24pIHsKLSAgICAgICAgICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0VG9MZW5ndGgocmVn
aW9uLT50b3AoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExl
bmd0aCByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnJpZ2h0KCksIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBMZW5ndGggYm90dG9tID0gY29udmVydFRv
TGVuZ3RoKHJlZ2lvbi0+Ym90dG9tKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0g
ICAgICAgICAgICBMZW5ndGggbGVmdCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmxlZnQoKSwg
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIExlbmd0aCB0b3AgPSBj
b252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT50b3AoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlKTsKKyAgICAgICAgICAgIExlbmd0aCByaWdodCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdp
b24tPnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBM
ZW5ndGggYm90dG9tID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+Ym90dG9tKCksIHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggbGVmdCA9IGNvbnZl
cnRUb0ludExlbmd0aChyZWdpb24tPmxlZnQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
KTsKICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCiAgICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpDaXJjbGUs
IHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmly
c3QgPyBmYWxzZSA6IHRydWUpOwogICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9uLT5tX2lzUmVj
dGFuZ2xlKQpAQCAtNzE4MywxMyArNzE5NywxMyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNy
ZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR4ID0gTGVuZ3RoKDAsIEZp
eGVkKTsKICAgICAgICAgICAgICAgICBMZW5ndGggdHkgPSBMZW5ndGgoMCwgRml4ZWQpOwogICAg
ICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAg
ICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9v
dFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZl
cnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3Is
ICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSB7IAotICAgICAgICAgICAgICAgICAgICB0eCA9
IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9y
LCAmb2spOworICAgICAgICAgICAgICAgICAgICB0eCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZp
cnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29u
dmVydFRvTGVuZ3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAm
b2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5n
dGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CkBAIC03MjA3LDE5ICs3MjIxLDE5IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3Jl
YXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAgICBMZW5ndGggdHkgPSBMZW5ndGgoMCwgRml4
ZWQpOwogICAgICAgICAgICAgICAgIExlbmd0aCB0eiA9IExlbmd0aCgwLCBGaXhlZCk7CiAgICAg
ICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb24pCi0gICAgICAg
ICAgICAgICAgICAgIHR6ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgIHR6ID0gY29udmVy
dFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvciwg
Jm9rKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9u
VHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVZVHJhbnNmb3JtT3Bl
cmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAg
ICAgICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSB7IAotICAgICAgICAg
ICAgICAgICAgICB0eCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAgICAgICB0eCA9IGNvbnZlcnRU
b0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZv
ayk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlw
ZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0
aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0
aCgpID4gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHogPSBjb252ZXJ0VG9MZW5ndGgodGhpcmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwg
em9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZl
cnRUb0Zsb2F0TGVuZ3RoKHRoaXJkVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3Is
ICZvayk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvTGVuZ3RoKHNl
Y29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoc2Vjb25kVmFsdWUs
IHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC03MzUw
LDcgKzczNjQsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAg
ICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHAg
PSBMZW5ndGgoMCwgRml4ZWQpOwogICAgICAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1
ZTo6aXNVbml0VHlwZUxlbmd0aChmaXJzdFZhbHVlLT5wcmltaXRpdmVUeXBlKCkpKQotICAgICAg
ICAgICAgICAgICAgICBwID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgIHAgPSBjb252ZXJ0
VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAm
b2spOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIGEgcXVpcmsgdGhhdCBzaG91bGQgZ28gYXdheSB3aGVuIDNkIHRyYW5zZm9ybXMgYXJlIGZp
bmFsaXplZC4KICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9IGZpcnN0VmFsdWUtPmdl
dERvdWJsZVZhbHVlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkocmV2aXNpb24g
ODAwNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsMzYgKzQwLDQxIEBAIHN0cnVjdCBMZW5ndGggewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIExlbmd0aCgpCi0gICAgICAgIDogbV92YWx1ZSgwKQor
ICAgICAgICA6ICBtX2ludFZhbHVlKDApLCBtX3F1aXJrKGZhbHNlKSwgbV90eXBlKEF1dG8pLCBt
X2lzRmxvYXQoZmFsc2UpCiAgICAgewogICAgIH0KIAogICAgIExlbmd0aChMZW5ndGhUeXBlIHQp
Ci0gICAgICAgIDogbV92YWx1ZSh0KQorICAgICAgICA6IG1faW50VmFsdWUoMCksIG1fcXVpcmso
ZmFsc2UpLCBtX3R5cGUodCksIG1faXNGbG9hdChmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAg
TGVuZ3RoKGludCB2LCBMZW5ndGhUeXBlIHQsIGJvb2wgcSA9IGZhbHNlKQotICAgICAgICA6IG1f
dmFsdWUoKHYgKiAxNikgfCAocSA8PCAzKSB8IHQpIC8vIEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYg
dGhlIHBhc3NlZC1pbiB2YWx1ZSBpcyB2ZXJ5IGxhcmdlIQorICAgICAgICA6IG1faW50VmFsdWUo
diksIG1fcXVpcmsocSksIG1fdHlwZSh0KSwgbV9pc0Zsb2F0KGZhbHNlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHQgIT0gUGVyY2VudCk7CiAgICAgfQogCiAgICAgTGVuZ3RoKGRvdWJsZSB2LCBM
ZW5ndGhUeXBlIHQsIGJvb2wgcSA9IGZhbHNlKQotICAgICAgICA6IG1fdmFsdWUoc3RhdGljX2Nh
c3Q8aW50Pih2ICogcGVyY2VudFNjYWxlRmFjdG9yKSAqIDE2IHwgKHEgPDwgMykgfCB0KQorICAg
ICAgICA6IG1fcXVpcmsocSksIG1fdHlwZSh0KSwgbV9pc0Zsb2F0KGZhbHNlKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7CisgICAgICAgIGlmIChtX3R5cGUgPT0gUGVyY2Vu
dCkKKyAgICAgICAgICAgIG1faW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHYqcGVyY2VudFNj
YWxlRmFjdG9yKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2lzRmxvYXQgPSB0cnVl
OyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9mbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHYpOworICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVu
Z3RoJiBvKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG8ubV92YWx1ZTsgfQotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgIT0gby5t
X3ZhbHVlOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyBy
ZXR1cm4gKGdldEZsb2F0VmFsdWUoKSA9PSBvLmdldEZsb2F0VmFsdWUoKSkgJiYgKG1fdHlwZSA9
PSBvLm1fdHlwZSkgJiYgKG1fcXVpcmsgPT0gby5tX3F1aXJrKTsgfQorICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIChnZXRGbG9hdFZhbHVlKCkgIT0g
by5nZXRGbG9hdFZhbHVlKCkpIHx8IChtX3R5cGUgIT0gby5tX3R5cGUpIHx8IChtX3F1aXJrICE9
IG8ubV9xdWlyayk7IH0KIAogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsKICAgICAgICAgQVNTRVJU
KHR5cGUoKSAhPSBQZXJjZW50KTsKICAgICAgICAgcmV0dXJuIHJhd1ZhbHVlKCk7CiAgICAgfQog
Ci0gICAgaW50IHJhd1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKG1fdmFsdWUgJiB+MHhGKSAvIDE2
OyB9CisgICAgaW50IHJhd1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gZ2V0SW50VmFsdWUoKTsgfQog
CiAgICAgZG91YmxlIHBlcmNlbnQoKSBjb25zdAogICAgIHsKQEAgLTc3LDM1ICs4MiwzMiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHJhd1ZhbHVlKCkpIC8g
cGVyY2VudFNjYWxlRmFjdG9yOwogICAgIH0KIAotICAgIExlbmd0aFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PExlbmd0aFR5cGU+KG1fdmFsdWUgJiA3KTsgfQotICAgIGJv
b2wgcXVpcmsoKSBjb25zdCB7IHJldHVybiAobV92YWx1ZSA+PiAzKSAmIDE7IH0KKyAgICBMZW5n
dGhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhUeXBlPihtX3R5
cGUpOyB9CisgICAgYm9vbCBxdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fcXVpcms7IH0KIAogICAg
IHZvaWQgc2V0VmFsdWUoTGVuZ3RoVHlwZSB0LCBpbnQgdmFsdWUpCiAgICAgewotICAgICAgICBB
U1NFUlQodCAhPSBQZXJjZW50KTsKLSAgICAgICAgc2V0UmF3VmFsdWUodCwgdmFsdWUpOworICAg
ICAgICBtX3R5cGUgPSB0OworICAgICAgICBtX2ludFZhbHVlID0gdmFsdWU7CisgICAgICAgIG1f
aXNGbG9hdCA9IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgc2V0UmF3VmFsdWUoTGVuZ3RoVHlw
ZSB0LCBpbnQgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlICogMTYgfCAobV92YWx1ZSAmIDB4OCkg
fCB0OyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKGludCB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghdmFsdWUgfHwgdHlwZSgpICE9IFBlcmNlbnQpOwotICAgICAgICBzZXRSYXdWYWx1ZSh2
YWx1ZSk7CisgICAgICAgIHNldFZhbHVlKEZpeGVkLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRSYXdWYWx1ZShpbnQgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlICogMTYgfCAobV92YWx1
ZSAmIDB4Rik7IH0KLQogICAgIHZvaWQgc2V0VmFsdWUoTGVuZ3RoVHlwZSB0LCBkb3VibGUgdmFs
dWUpCiAgICAgewotICAgICAgICBBU1NFUlQodCA9PSBQZXJjZW50KTsKLSAgICAgICAgbV92YWx1
ZSA9IHN0YXRpY19jYXN0PGludD4odmFsdWUgKiBwZXJjZW50U2NhbGVGYWN0b3IpICogMTYgfCAo
bV92YWx1ZSAmIDB4OCkgfCB0OworICAgICAgICBtX3R5cGUgPSB0OworICAgICAgICBtX2Zsb2F0
VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgbV9pc0Zsb2F0ID0gdHJ1ZTsgICAgCiAgICAgfQogCiAg
ICAgdm9pZCBzZXRWYWx1ZShkb3VibGUgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQodHlw
ZSgpID09IFBlcmNlbnQpOwotICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZSAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8IChtX3ZhbHVlICYgMHhGKTsKKyAgICAgICAg
KnRoaXMgPSBMZW5ndGgodmFsdWUsIEZpeGVkKTsKICAgICB9CiAKICAgICAvLyBub3RlOiB3b3Jr
cyBvbmx5IGZvciBjZXJ0YWluIHR5cGVzLCByZXR1cm5zIHVuZGVmaW5lZExlbmd0aCBvdGhlcndp
c2UKQEAgLTE0NCw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5
cGUoKSkgewogICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRG
bG9hdFZhbHVlKCk7CiAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wKTsK
ICAgICAgICAgICAgIGNhc2UgQXV0bzoKQEAgLTE1NSw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPT0g
dW5kZWZpbmVkTGVuZ3RoOyB9Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhKG1f
dmFsdWUgJiB+MHhGKTsgfQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIWdldElu
dFZhbHVlKCk7IH0KICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiByYXdWYWx1
ZSgpID4gMDsgfQogICAgIGJvb2wgaXNOZWdhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVl
KCkgPCAwOyB9CiAKQEAgLTE4NCwxMyArMTg2LDMzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBMZW5ndGgoZnJvbVBlcmNlbnQgKyAodG9QZXJjZW50IC0gZnJvbVBlcmNlbnQpICogcHJv
Z3Jlc3MsIFBlcmNlbnQpOwogICAgICAgICB9IAogICAgICAgICAgICAgCi0gICAgICAgIGludCBm
cm9tVmFsdWUgPSBmcm9tLmlzWmVybygpID8gMCA6IGZyb20udmFsdWUoKTsKLSAgICAgICAgaW50
IHRvVmFsdWUgPSBpc1plcm8oKSA/IDAgOiB2YWx1ZSgpOwotICAgICAgICByZXR1cm4gTGVuZ3Ro
KGludChmcm9tVmFsdWUgKyAodG9WYWx1ZSAtIGZyb21WYWx1ZSkgKiBwcm9ncmVzcyksIHJlc3Vs
dFR5cGUpOworICAgICAgICBkb3VibGUgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBm
cm9tLnZhbHVlKCk7CisgICAgICAgIGRvdWJsZSB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogdmFs
dWUoKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChmcm9tVmFsdWUgKyAodG9WYWx1ZSAtIGZyb21W
YWx1ZSkgKiBwcm9ncmVzcywgcmVzdWx0VHlwZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGlu
dCBtX3ZhbHVlOworICAgIGludCBnZXRJbnRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAobV9pc0Zsb2F0KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9mbG9h
dFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1faW50VmFsdWU7CisgICAgfQorCisgICAgZmxvYXQg
Z2V0RmxvYXRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBtX2Zsb2F0VmFsdWU7CisgICAgICAgIHJldHVybiBtX2ludFZh
bHVlOworICAgIH0KKworICAgIHVuaW9uIHsKKyAgICAgICAgaW50IG1faW50VmFsdWU7CisgICAg
ICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKKyAgICB9OworICAgIGJvb2wgbV9xdWlyazsKKyAgICB1
bnNpZ25lZCBjaGFyIG1fdHlwZTsKKyAgICBib29sIG1faXNGbG9hdDsKIH07CiAKIFBhc3NPd25B
cnJheVB0cjxMZW5ndGg+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCShy
ZXZpc2lvbiA4MDA0NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlv
dXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5
b3V0OjpyZWNhbGNDb2x1bW4oaW50IGUKICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGNlbGxM
b2dpY2FsV2lkdGggPSBjZWxsLT5zdHlsZU9yQ29sTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlzIHRoaXMgYXJiaXRyYXJ5IHZhbHVlPwogICAgICAg
ICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5yYXdWYWx1ZSgpID4gMzI3NjApCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFJhd1ZhbHVlKDMyNzYw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoMzI3
NjApOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc05lZ2F0aXZl
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKDAp
OwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNlbGxMb2dpY2FsV2lkdGgudHlwZSgpKSB7
CkBAIC0zNzQsNyArMzc0LDcgQEAgaW50IEF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxv
Z2ljYQogICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxXaWR0aCAtPSBtX2xheW91dFN0cnVj
dFtwb3NdLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAg
IHBlcmNlbnRNaXNzaW5nIC09IHBlcmNlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cGVyY2VudCA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3Rb
cG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguc2V0UmF3VmFsdWUoUGVyY2VudCwgcGVyY2VudCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3Rp
dmVMb2dpY2FsV2lkdGguc2V0VmFsdWUoUGVyY2VudCwgcGVyY2VudCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1
Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGggPSBMZW5ndGgoKTsKICAgICAgICAgICAgICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5
b3V0LmNwcAkocmV2aXNpb24gODAwNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4
ZWRUYWJsZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBpbnQg
Rml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoaW50CiAgICAgICAgICAgICAgICAgICAg
IHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW4gPSBtX3RhYmxlLT5zcGFuT2ZFZmZDb2woY3Vy
cmVudEVmZmVjdGl2ZUNvbHVtbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmICgody5pc0ZpeGVkKCkgfHwgdy5pc1BlcmNlbnQoKSkgJiYgdy5pc1Bvc2l0aXZlKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV93aWR0aFtjdXJyZW50RWZmZWN0aXZlQ29sdW1uXS5zZXRS
YXdWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNv
bHVtbik7CisgICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVmZmVjdGl2ZUNvbHVt
bl0uc2V0VmFsdWUody50eXBlKCksIHcucmF3VmFsdWUoKSAqIHNwYW5JbkN1cnJlbnRFZmZlY3Rp
dmVDb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICB1c2VkV2lkdGggKz0gZWZmV2lkdGggKiBz
cGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBzcGFuIC09IHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW47CkBAIC0xNjcsNyAr
MTY3LDcgQEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KGludAogICAgICAg
ICAgICAgICAgICAgICBpbnQgZVNwYW4gPSBtX3RhYmxlLT5zcGFuT2ZFZmZDb2woY0NvbCArIGkp
OwogICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHNldCBpZiBubyBjb2wgZWxlbWVudCBoYXMg
YWxyZWFkeSBzZXQgaXQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3dpZHRoW2NDb2wgKyBp
XS5pc0F1dG8oKSAmJiB3LnR5cGUoKSAhPSBBdXRvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3dpZHRoW2NDb2wgKyBpXS5zZXRSYXdWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICog
ZVNwYW4gLyBzcGFuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fd2lkdGhbY0NvbCArIGld
LnNldFZhbHVlKHcudHlwZSgpLCB3LnJhd1ZhbHVlKCkgKiBlU3BhbiAvIHNwYW4pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlZFdpZHRoICs9IGVmZldpZHRoICogZVNwYW4gLyBzcGFuOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHVzZWRTcGFuICs9IGVT
cGFuOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODAwNjYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0wMSAgUmlrIENhYmFuaWVy
ICA8Y2FiYW5pZXJAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCB0aGF0IGFsbG93cyBmaXhlZCBsZW5ndGggdmFsdWVzIHRvIGJl
IGZsb2F0aW5nIHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjY5OQorCisgICAgICAgIFRyYW5zaXRpb25zIG5vdyByZXR1cm4gbWF0cmljZXMg
aW4gZmxvYXRpbmcgcG9pbnQuIDIgb2YgdGhlIHRyYW5zaXRpb24gdGVzdHMgd2VyZSBmYWlsaW5n
CisgICAgICAgIGJlY2F1c2UgdGhleSBleHBlY3RlZCBpbnRlZ2VyIHZhbHVlcy4KKworICAgICAg
ICAqIHRyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sOgorICAgICAg
ICAqIHRyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5zaXRpb24uaHRtbDoKKwogMjAxMS0wMy0w
MSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYmFzZWxpbmUKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJh
bnNmb3JtLWZ1bmN0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRp
b25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiA4MDA0NikKKysr
IExheW91dFRlc3RzL3RyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3JtLWZ1bmN0aW9ucy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsOCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgewotICAgICAgdmFyIHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9ybTsKLSAgICAgIC8vIGdyYWIgdGhl
IGxhc3QgdmFsdWUgZnJvbSB0aGUgbWF0cml4KCkKLSAgICAgIHZhciBsYXN0VmFsdWVSRSA9IC8o
XGQrKVwpJC87Ci0gICAgICB2YXIgeVRyYW5zbGF0ZSA9IHBhcnNlSW50KGxhc3RWYWx1ZVJFLmV4
ZWModCkpOwotICAgICAgCi0gICAgICB2YXIgcmVzdWx0ID0gKHlUcmFuc2xhdGUgPCAyMDApID8g
J1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxkIHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkg
PCAyMDAnOworICAgICAgdmFyIGMgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3Jt
KTsgICAgICAKKyAgICAgIHZhciByZXN1bHQgPSAoYy5mIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlM
OiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAK
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCkluZGV4OiBMYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sCShyZXZp
c2lvbiA4MDA0NikKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3JldGFyZ2V0dGVkLXRyYW5z
aXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDggQEAKIAogICAgIGZ1bmN0
aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIHZhciB0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53ZWJraXRUcmFuc2Zvcm07Ci0gICAgICAv
LyBncmFiIHRoZSBsYXN0IHZhbHVlIGZyb20gdGhlIG1hdHJpeCgpCi0gICAgICB2YXIgbGFzdFZh
bHVlUkUgPSAvKFxkKylcKSQvOwotICAgICAgdmFyIHlUcmFuc2xhdGUgPSBwYXJzZUludChsYXN0
VmFsdWVSRS5leGVjKHQpKTsKLQotICAgICAgdmFyIHJlc3VsdCA9ICh5VHJhbnNsYXRlIDwgMjAw
KSA/ICdQQVNTJyA6ICdGQUlMOiB0cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBz
byB5IDwgMjAwJzsKKyAgICAgIHZhciBjID0gbmV3IFdlYktpdENTU01hdHJpeCh3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtpdFRyYW5z
Zm9ybSk7CisgICAgICB2YXIgcmVzdWx0ID0gKGMuZiA8IDIwMCkgPyAnUEFTUycgOiAnRkFJTDog
dHJhbnNpdGlvbiBzaG91bGQgc3RpbGwgYmUgcnVubmluZywgc28geSA8IDIwMCc7CiAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwogCiAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85254</attachid>
            <date>2011-03-09 16:10:22 -0800</date>
            <delta_ts>2011-03-10 20:09:12 -0800</delta_ts>
            <desc>latest fix for leopard</desc>
            <filename>newpatch.txt</filename>
            <type>text/plain</type>
            <size>21339</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNjY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDMtMDkgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhhdCBhbGxvd3MgZml4ZWQgbGVuZ3RoIHZhbHVlcyB0
byBiZSBmbG9hdGluZyBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI2OTkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
cmF3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6cXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNGbG9hdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNh
bGNDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0
aXZlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6
CisKIDIwMTEtMDMtMDkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gODA2NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNjMsNyAr
MzM2Myw3IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQoKQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogLy8gdGhpcyBpcyBtb3N0bHkgYm9yaW5nIHN0dWZmIG9uIGhvdyB0byBh
cHBseSBhIGNlcnRhaW4gcnVsZSB0byB0aGUgcmVuZGVyc3R5bGUuLi4KIAotc3RhdGljIExlbmd0
aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
ID0gMSwgYm9vbCAqb2sgPSAwKQorc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGJvb2wgdG9GbG9hdCwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29s
ICpvayA9IDApCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0b2xlcmFudCBvZiBhIG51bGwg
c3R5bGUgdmFsdWUuIFRoZSBvbmx5IHBsYWNlIHN0eWxlIGlzIHVzZWQgaXMgaW4KICAgICAvLyBs
ZW5ndGggbWVhc3VyZW1lbnRzLCBsaWtlICdlbXMnIGFuZCAncHgnLiBBbmQgaW4gdGhvc2UgY2Fz
ZXMgc3R5bGUgaXMgb25seSB1c2VkCkBAIC0zMzc4LDggKzMzNzgsMTIgQEAgc3RhdGljIExlbmd0
aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aQogICAgICAgICBpZiAoIXN0eWxlICYmICh0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TIHx8IHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FWFMgfHwgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFTVMpKSB7CiAg
ICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAg
IH0gZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0g
ICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9y
TGVuZ3RoKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBGaXhlZCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKKyAg
ICAgICAgICAgIGlmICh0b0Zsb2F0KQorICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0
aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGll
ciksIEZpeGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlLCByb290U3R5
bGUsIG11bHRpcGxpZXIpLCBGaXhlZCk7CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgICAgICBsID0g
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKQEAgLTMz
ODksNiArMzM5MywxNiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRp
CiAgICAgfQogICAgIHJldHVybiBsOwogfQorICAgIAorc3RhdGljIExlbmd0aCBjb252ZXJ0VG9J
bnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSog
c3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9v
bCAqb2sgPSAwKQoreworICAgIHJldHVybiBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUs
IHN0eWxlLCByb290U3R5bGUsIGZhbHNlLCBtdWx0aXBsaWVyLCBvayk7Cit9CisKK3N0YXRpYyBM
ZW5ndGggY29udmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQoreworICAgIHJldHVybiBjb252ZXJ0VG9MZW5n
dGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHRydWUsIG11bHRpcGxpZXIsIG9r
KTsKK30KIAogdGVtcGxhdGUgPGJvb2wgYXBwbHlGaXJzdD4KIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGlu
dCBlbmRJbmRleCkKQEAgLTQ3MDksMTAgKzQ3MjMsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZh
bHVlLT5nZXRSZWN0VmFsdWUoKTsKICAgICAgICAgICAgIGlmICghcmVjdCkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB0b3AgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+dG9w
KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAg
ICByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgYm90dG9tID0gY29udmVydFRv
TGVuZ3RoKHJlY3QtPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21G
YWN0b3IpOwotICAgICAgICAgICAgbGVmdCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5sZWZ0KCks
IHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICB0
b3AgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVjdC0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1l
bnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICByaWdodCA9IGNvbnZlcnRUb0ludExl
bmd0aChyZWN0LT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpOworICAgICAgICAgICAgYm90dG9tID0gY29udmVydFRvSW50TGVuZ3RoKHJlY3QtPmJvdHRv
bSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAg
ICAgbGVmdCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWN0LT5sZWZ0KCksIHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKSB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTU2NTUsOSArNTY2OSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgTGVuZ3RoIGwgPSBjb252ZXJ0VG9MZW5ndGgo
cHJpbWl0aXZlVmFsdWUsIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKKyAg
ICAgICAgICAgIExlbmd0aCBtYXJxdWVlTGVuZ3RoID0gY29udmVydFRvSW50TGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIDEsICZvayk7CiAgICAgICAg
ICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVu
dChsKTsKKyAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KG1hcnF1
ZWVMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01ODE5LDEw
ICs1ODMzLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAg
ICAgICAgICAgIAogICAgICAgICBEYXNoYm9hcmRSZWdpb24gKmZpcnN0ID0gcmVnaW9uOwogICAg
ICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRv
TGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAg
ICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5yaWdodCgpLCBz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9
IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9u
LT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5n
dGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9JbnRM
ZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAg
ICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPmJvdHRv
bSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIGxl
ZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQogICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lv
bjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVn
aW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lv
bi0+bV9pc1JlY3RhbmdsZSkKQEAgLTczMDEsMTMgKzczMTUsMTMgQEAgYm9vbCBDU1NTdHlsZVNl
bGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgIExlbmd0aCB0eCA9IExl
bmd0aCgwLCBGaXhlZCk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZp
eGVkKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUo
KSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwg
c3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAg
dHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6
b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVsc2UgeyAKLSAgICAgICAgICAgICAg
ICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwg
em9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9GbG9h
dExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwog
ICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAh
PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+
IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vj
b25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9v
bUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRU
b0Zsb2F0TGVuZ3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAm
b2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQpAQCAtNzMyNSwxOSArNzMzOSwxOSBAQCBib29sIENTU1N0eWxlU2Vs
ZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVu
Z3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBMZW5ndGggdHogPSBMZW5ndGgoMCwgRml4
ZWQpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgp
ID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9u
KQotICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBz
dHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAgICAgICB0
eiA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpv
b21GYWN0b3IsICZvayk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3JtVmFsdWUt
Pm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRy
YW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5n
dGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAg
ICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHls
ZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgIGVsc2UgeyAK
LSAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5
bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgdHgg
PSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29t
RmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9w
ZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5z
Zm9ybU9wZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZh
bHVlLT5sZW5ndGgoKSA+IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR6ID0gY29udmVydFRvTGVuZ3RoKHRoaXJkVmFsdWUsIHN0eWxlLCBy
b290U3R5bGUsIHpvb21GYWN0b3IsICZvayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6
b29tRmFjdG9yLCAmb2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRU
b0xlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvciwgJm9rKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKHNl
Y29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQpAQCAtNzQ2OCw3ICs3NDgyLDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFu
c2Zvcm1PcAogICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwogICAgICAgICAgICAgICAg
IExlbmd0aCBwID0gTGVuZ3RoKDAsIEZpeGVkKTsKICAgICAgICAgICAgICAgICBpZiAoQ1NTUHJp
bWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgoZmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgp
KSkKLSAgICAgICAgICAgICAgICAgICAgcCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBz
dHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yLCAmb2spOworICAgICAgICAgICAgICAgICAgICBw
ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9v
bUZhY3RvciwgJm9rKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0cmFuc2Zv
cm1zIGFyZSBmaW5hbGl6ZWQuCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSBmaXJz
dFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJ
KHJldmlzaW9uIDgwNjY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDM2ICs0MCw0MSBAQCBzdHJ1Y3QgTGVuZ3RoIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMZW5ndGgoKQotICAgICAgICA6IG1f
dmFsdWUoMCkKKyAgICAgICAgOiAgbV9pbnRWYWx1ZSgwKSwgbV9xdWlyayhmYWxzZSksIG1fdHlw
ZShBdXRvKSwgbV9pc0Zsb2F0KGZhbHNlKQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGgoTGVu
Z3RoVHlwZSB0KQotICAgICAgICA6IG1fdmFsdWUodCkKKyAgICAgICAgOiBtX2ludFZhbHVlKDAp
LCBtX3F1aXJrKGZhbHNlKSwgbV90eXBlKHQpLCBtX2lzRmxvYXQoZmFsc2UpCiAgICAgewogICAg
IH0KIAogICAgIExlbmd0aChpbnQgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKLSAg
ICAgICAgOiBtX3ZhbHVlKCh2ICogMTYpIHwgKHEgPDwgMykgfCB0KSAvLyBGSVhNRTogRG9lc24n
dCB3b3JrIGlmIHRoZSBwYXNzZWQtaW4gdmFsdWUgaXMgdmVyeSBsYXJnZSEKKyAgICAgICAgOiBt
X2ludFZhbHVlKHYpLCBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChmYWxzZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCh0ICE9IFBlcmNlbnQpOwogICAgIH0KIAogICAgIExlbmd0aChk
b3VibGUgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKLSAgICAgICAgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PGludD4odiAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAxNiB8IChxIDw8IDMp
IHwgdCkKKyAgICAgICAgOiBtX3F1aXJrKHEpLCBtX3R5cGUodCksIG1faXNGbG9hdChmYWxzZSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ID09IFBlcmNlbnQpOworICAgICAgICBpZiAobV90eXBl
ID09IFBlcmNlbnQpCisgICAgICAgICAgICBtX2ludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2
KnBlcmNlbnRTY2FsZUZhY3Rvcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9pc0Zs
b2F0ID0gdHJ1ZTsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRp
Y19jYXN0PGZsb2F0Pih2KTsKKyAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvLm1fdmFsdWU7IH0K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlICE9IG8ubV92YWx1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGgmIG8p
IGNvbnN0IHsgcmV0dXJuIChnZXRGbG9hdFZhbHVlKCkgPT0gby5nZXRGbG9hdFZhbHVlKCkpICYm
IChtX3R5cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJrID09IG8ubV9xdWlyayk7IH0KKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAoZ2V0RmxvYXRW
YWx1ZSgpICE9IG8uZ2V0RmxvYXRWYWx1ZSgpKSB8fCAobV90eXBlICE9IG8ubV90eXBlKSB8fCAo
bV9xdWlyayAhPSBvLm1fcXVpcmspOyB9CiAKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7CiAgICAg
ICAgIEFTU0VSVCh0eXBlKCkgIT0gUGVyY2VudCk7CiAgICAgICAgIHJldHVybiByYXdWYWx1ZSgp
OwogICAgIH0KIAotICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX3ZhbHVlICYg
fjB4RikgLyAxNjsgfQorICAgIGludCByYXdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEludFZh
bHVlKCk7IH0KIAogICAgIGRvdWJsZSBwZXJjZW50KCkgY29uc3QKICAgICB7CkBAIC03NywzNSAr
ODIsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihyYXdW
YWx1ZSgpKSAvIHBlcmNlbnRTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBMZW5ndGhUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMZW5ndGhUeXBlPihtX3ZhbHVlICYgNyk7
IH0KLSAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gKG1fdmFsdWUgPj4gMykgJiAxOyB9
CisgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGVuZ3Ro
VHlwZT4obV90eXBlKTsgfQorICAgIGJvb2wgcXVpcmsoKSBjb25zdCB7IHJldHVybiBtX3F1aXJr
OyB9CiAKICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKHQgIT0gUGVyY2VudCk7Ci0gICAgICAgIHNldFJhd1ZhbHVlKHQsIHZh
bHVlKTsKKyAgICAgICAgbV90eXBlID0gdDsKKyAgICAgICAgbV9pbnRWYWx1ZSA9IHZhbHVlOwor
ICAgICAgICBtX2lzRmxvYXQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIHNldFJhd1ZhbHVl
KExlbmd0aFR5cGUgdCwgaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2IHwgKG1fdmFs
dWUgJiAweDgpIHwgdDsgfQotCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIXZhbHVlIHx8IHR5cGUoKSAhPSBQZXJjZW50KTsKLSAgICAgICAgc2V0
UmF3VmFsdWUodmFsdWUpOworICAgICAgICBzZXRWYWx1ZShGaXhlZCwgdmFsdWUpOwogICAgIH0K
IAotICAgIHZvaWQgc2V0UmF3VmFsdWUoaW50IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZSAqIDE2
IHwgKG1fdmFsdWUgJiAweEYpOyB9Ci0KICAgICB2b2lkIHNldFZhbHVlKExlbmd0aFR5cGUgdCwg
ZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHQgPT0gUGVyY2VudCk7Ci0gICAg
ICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogcGVyY2VudFNjYWxlRmFjdG9y
KSAqIDE2IHwgKG1fdmFsdWUgJiAweDgpIHwgdDsKKyAgICAgICAgbV90eXBlID0gdDsKKyAgICAg
ICAgbV9mbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKTsKKyAgICAgICAgbV9p
c0Zsb2F0ID0gdHJ1ZTsgICAgCiAgICAgfQogCiAgICAgdm9pZCBzZXRWYWx1ZShkb3VibGUgdmFs
dWUpCiAgICAgewotICAgICAgICBBU1NFUlQodHlwZSgpID09IFBlcmNlbnQpOwotICAgICAgICBt
X3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAqIHBlcmNlbnRTY2FsZUZhY3RvcikgKiAx
NiB8IChtX3ZhbHVlICYgMHhGKTsKKyAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIEZpeGVk
KTsKICAgICB9CiAKICAgICAvLyBub3RlOiB3b3JrcyBvbmx5IGZvciBjZXJ0YWluIHR5cGVzLCBy
ZXR1cm5zIHVuZGVmaW5lZExlbmd0aCBvdGhlcndpc2UKQEAgLTE0NCw3ICsxNDYsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBG
aXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKCkp
OworICAgICAgICAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCk7CiAgICAgICAgICAgICBj
YXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Piht
YXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wKTsKICAgICAgICAgICAgIGNhc2UgQXV0bzoKQEAg
LTE1NSw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1VuZGVmaW5lZCgp
IGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPT0gdW5kZWZpbmVkTGVuZ3RoOyB9Ci0gICAgYm9v
bCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhKG1fdmFsdWUgJiB+MHhGKTsgfQorICAgIGJvb2wg
aXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIWdldEludFZhbHVlKCk7IH0KICAgICBib29sIGlzUG9z
aXRpdmUoKSBjb25zdCB7IHJldHVybiByYXdWYWx1ZSgpID4gMDsgfQogICAgIGJvb2wgaXNOZWdh
dGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhd1ZhbHVlKCkgPCAwOyB9CiAKQEAgLTE4NCwxMyArMTg2
LDMzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBMZW5ndGgoZnJvbVBlcmNlbnQgKyAo
dG9QZXJjZW50IC0gZnJvbVBlcmNlbnQpICogcHJvZ3Jlc3MsIFBlcmNlbnQpOwogICAgICAgICB9
IAogICAgICAgICAgICAgCi0gICAgICAgIGludCBmcm9tVmFsdWUgPSBmcm9tLmlzWmVybygpID8g
MCA6IGZyb20udmFsdWUoKTsKLSAgICAgICAgaW50IHRvVmFsdWUgPSBpc1plcm8oKSA/IDAgOiB2
YWx1ZSgpOwotICAgICAgICByZXR1cm4gTGVuZ3RoKGludChmcm9tVmFsdWUgKyAodG9WYWx1ZSAt
IGZyb21WYWx1ZSkgKiBwcm9ncmVzcyksIHJlc3VsdFR5cGUpOworICAgICAgICBkb3VibGUgZnJv
bVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLnZhbHVlKCk7CisgICAgICAgIGRvdWJs
ZSB0b1ZhbHVlID0gaXNaZXJvKCkgPyAwIDogdmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIExlbmd0
aChmcm9tVmFsdWUgKyAodG9WYWx1ZSAtIGZyb21WYWx1ZSkgKiBwcm9ncmVzcywgcmVzdWx0VHlw
ZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGludCBtX3ZhbHVlOworICAgIGludCBnZXRJbnRW
YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9mbG9hdFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1f
aW50VmFsdWU7CisgICAgfQorCisgICAgZmxvYXQgZ2V0RmxvYXRWYWx1ZSgpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAgICAgICAgIHJldHVybiBtX2Zsb2F0
VmFsdWU7CisgICAgICAgIHJldHVybiBtX2ludFZhbHVlOworICAgIH0KKworICAgIHVuaW9uIHsK
KyAgICAgICAgaW50IG1faW50VmFsdWU7CisgICAgICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKKyAg
ICB9OworICAgIGJvb2wgbV9xdWlyazsKKyAgICB1bnNpZ25lZCBjaGFyIG1fdHlwZTsKKyAgICBi
b29sIG1faXNGbG9hdDsKIH07CiAKIFBhc3NPd25BcnJheVB0cjxMZW5ndGg+IG5ld0Nvb3Jkc0Fy
cmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCShyZXZpc2lvbiA4MDY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1bW4oaW50IGUKICAg
ICAgICAgICAgICAgICAgICAgTGVuZ3RoIGNlbGxMb2dpY2FsV2lkdGggPSBjZWxsLT5zdHlsZU9y
Q29sTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlz
IHRoaXMgYXJiaXRyYXJ5IHZhbHVlPwogICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2lj
YWxXaWR0aC5yYXdWYWx1ZSgpID4gMzI3NjApCi0gICAgICAgICAgICAgICAgICAgICAgICBjZWxs
TG9naWNhbFdpZHRoLnNldFJhd1ZhbHVlKDMyNzYwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoMzI3NjApOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoY2VsbExvZ2ljYWxXaWR0aC5pc05lZ2F0aXZlKCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKDApOwogICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGNlbGxMb2dpY2FsV2lkdGgudHlwZSgpKSB7CkBAIC0zNzQsNyArMzc0LDcgQEAgaW50IEF1
dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYQogICAgICAgICAgICAgICAgICAgICAg
ICAgdG90YWxXaWR0aCAtPSBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1heExvZ2ljYWxX
aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRNaXNzaW5nIC09IHBlcmNlbnQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVyY2VudCA+IDApCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgu
c2V0UmF3VmFsdWUoUGVyY2VudCwgcGVyY2VudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguc2V0VmFsdWUoUGVy
Y2VudCwgcGVyY2VudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lk
dGggPSBMZW5ndGgoKTsKICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAkocmV2aXNpb24gODA2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBpbnQgRml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRo
QXJyYXkoaW50CiAgICAgICAgICAgICAgICAgICAgIHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1
bW4gPSBtX3RhYmxlLT5zcGFuT2ZFZmZDb2woY3VycmVudEVmZmVjdGl2ZUNvbHVtbik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgody5pc0ZpeGVkKCkgfHwgdy5pc1Bl
cmNlbnQoKSkgJiYgdy5pc1Bvc2l0aXZlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV93aWR0
aFtjdXJyZW50RWZmZWN0aXZlQ29sdW1uXS5zZXRSYXdWYWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1
ZSgpICogc3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbik7CisgICAgICAgICAgICAgICAgICAg
IG1fd2lkdGhbY3VycmVudEVmZmVjdGl2ZUNvbHVtbl0uc2V0VmFsdWUody50eXBlKCksIHcucmF3
VmFsdWUoKSAqIHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgICAg
ICAgICB1c2VkV2lkdGggKz0gZWZmV2lkdGggKiBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1u
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzcGFuIC09IHNwYW5JbkN1cnJl
bnRFZmZlY3RpdmVDb2x1bW47CkBAIC0xNjcsNyArMTY3LDcgQEAgaW50IEZpeGVkVGFibGVMYXlv
dXQ6OmNhbGNXaWR0aEFycmF5KGludAogICAgICAgICAgICAgICAgICAgICBpbnQgZVNwYW4gPSBt
X3RhYmxlLT5zcGFuT2ZFZmZDb2woY0NvbCArIGkpOwogICAgICAgICAgICAgICAgICAgICAvLyBP
bmx5IHNldCBpZiBubyBjb2wgZWxlbWVudCBoYXMgYWxyZWFkeSBzZXQgaXQuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3dpZHRoW2NDb2wgKyBpXS5pc0F1dG8oKSAmJiB3LnR5cGUoKSAhPSBB
dXRvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3dpZHRoW2NDb2wgKyBpXS5zZXRSYXdW
YWx1ZSh3LnR5cGUoKSwgdy5yYXdWYWx1ZSgpICogZVNwYW4gLyBzcGFuKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fd2lkdGhbY0NvbCArIGldLnNldFZhbHVlKHcudHlwZSgpLCB3LnJhd1Zh
bHVlKCkgKiBlU3BhbiAvIHNwYW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgdXNlZFdpZHRo
ICs9IGVmZldpZHRoICogZVNwYW4gLyBzcGFuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIHVzZWRTcGFuICs9IGVTcGFuOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODA2
NjcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wMy0wOSAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAZ21haWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB0aGF0IGFs
bG93cyBmaXhlZCBsZW5ndGggdmFsdWVzIHRvIGJlIGZsb2F0aW5nIHBvaW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY5OQorCisgICAgICAgIFRy
YW5zaXRpb25zIG5vdyByZXR1cm4gbWF0cmljZXMgaW4gZmxvYXRpbmcgcG9pbnQuIDIgb2YgdGhl
IHRyYW5zaXRpb24gdGVzdHMgd2VyZSBmYWlsaW5nCisgICAgICAgIGJlY2F1c2UgdGhleSBleHBl
Y3RlZCBpbnRlZ2VyIHZhbHVlcy4KKworICAgICAgICAqIHRyYW5zaXRpb25zL21hdGNoZWQtdHJh
bnNmb3JtLWZ1bmN0aW9ucy5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3JldGFyZ2V0dGVk
LXRyYW5zaXRpb24uaHRtbDoKKwogMjAxMS0wMy0wOSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5z
Zm9ybS1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gODA2NjcpCisrKyBMYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5jdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsMTIgKzI0LDggQEAKIAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIHZh
ciB0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
eCcpKS53ZWJraXRUcmFuc2Zvcm07Ci0gICAgICAvLyBncmFiIHRoZSBsYXN0IHZhbHVlIGZyb20g
dGhlIG1hdHJpeCgpCi0gICAgICB2YXIgbGFzdFZhbHVlUkUgPSAvKFxkKylcKSQvOwotICAgICAg
dmFyIHlUcmFuc2xhdGUgPSBwYXJzZUludChsYXN0VmFsdWVSRS5leGVjKHQpKTsKLSAgICAgIAot
ICAgICAgdmFyIHJlc3VsdCA9ICh5VHJhbnNsYXRlIDwgMjAwKSA/ICdQQVNTJyA6ICdGQUlMOiB0
cmFuc2l0aW9uIHNob3VsZCBzdGlsbCBiZSBydW5uaW5nLCBzbyB5IDwgMjAwJzsKKyAgICAgIHZh
ciBjID0gbmV3IFdlYktpdENTU01hdHJpeCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9ybSk7ICAgICAgCisgICAgICB2
YXIgcmVzdWx0ID0gKGMuZiA8IDIwMCkgPyAnUEFTUycgOiAnRkFJTDogdHJhbnNpdGlvbiBzaG91
bGQgc3RpbGwgYmUgcnVubmluZywgc28geSA8IDIwMCc7CiAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwogCiAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmV0
YXJnZXR0ZWQtdHJhbnNpdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3JldGFyZ2V0dGVkLXRyYW5zaXRpb24uaHRtbAkocmV2aXNpb24gODA2NjcpCisrKyBM
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFuc2l0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDEyICsyMyw4IEBACiAKICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICB7
Ci0gICAgICB2YXIgdCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNmb3JtOwotICAgICAgLy8gZ3JhYiB0aGUgbGFzdCB2
YWx1ZSBmcm9tIHRoZSBtYXRyaXgoKQotICAgICAgdmFyIGxhc3RWYWx1ZVJFID0gLyhcZCspXCkk
LzsKLSAgICAgIHZhciB5VHJhbnNsYXRlID0gcGFyc2VJbnQobGFzdFZhbHVlUkUuZXhlYyh0KSk7
Ci0KLSAgICAgIHZhciByZXN1bHQgPSAoeVRyYW5zbGF0ZSA8IDIwMCkgPyAnUEFTUycgOiAnRkFJ
TDogdHJhbnNpdGlvbiBzaG91bGQgc3RpbGwgYmUgcnVubmluZywgc28geSA8IDIwMCc7CisgICAg
ICB2YXIgYyA9IG5ldyBXZWJLaXRDU1NNYXRyaXgod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53ZWJraXRUcmFuc2Zvcm0pOworICAgICAgdmFy
IHJlc3VsdCA9IChjLmYgPCAyMDApID8gJ1BBU1MnIDogJ0ZBSUw6IHRyYW5zaXRpb24gc2hvdWxk
IHN0aWxsIGJlIHJ1bm5pbmcsIHNvIHkgPCAyMDAnOwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKIAogICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>