<?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>72688</bug_id>
          
          <creation_ts>2011-11-17 21:51:00 -0800</creation_ts>
          <short_desc>[chromium] Route willDraw/setNeedsRedraw to CCInputHandler and fix double-drawing issues that result</short_desc>
          <delta_ts>2011-11-22 01:34:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>505486</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-17 21:51:00 -0800</bug_when>
    <thetext>[chromium] Route willDraw/setNeedsRedraw to CCInputHandler and fix double-drawing issues that result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505490</commentid>
    <comment_count>1</comment_count>
      <attachid>115737</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-17 21:53:58 -0800</bug_when>
    <thetext>Created attachment 115737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505518</commentid>
    <comment_count>2</comment_count>
      <attachid>115737</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-17 22:53:14 -0800</bug_when>
    <thetext>Comment on attachment 115737
Patch

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

initial round of superficial comments. will have to think through actual logic when i&apos;m slightly less tired

&gt; Source/WebCore/ChangeLog:7
&gt; +        perform requestAnimationFrame-style aniimations. The bulk of

animations

&gt; Source/WebCore/platform/graphics/chromium/cc/CCInputHandler.h:35
&gt; +// The CCInputHanlder is an way for the embedders to interact with

handler

is a way

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:55
&gt; +class CCLayerTreeHostImpl : public CCInputHandlerTarget {

why Target instead of Client (or Delegate, which is less common in WebKit i believe)? dunno if we need yet another name for this pattern

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:89
&gt; +    bool m_processingScheduledActions;

should this be #ifndef NDEBUG guarded? it&apos;s not used for logic other than ASSERTS

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:466
&gt; +    m_inputHandlerOnImplThread-&gt;willDraw(WTF::monotonicallyIncreasingTime());

don&apos;t need WTF:: unless we shadow this function somewhere, it&apos;s in the global namespace (there&apos;s a using declaration in CurrentTime.h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506153</commentid>
    <comment_count>3</comment_count>
      <attachid>115737</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-18 15:50:55 -0800</bug_when>
    <thetext>Comment on attachment 115737
Patch

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

I think the frame # logic can be simplified, although there may be a case i&apos;m missing - see comment on CCScheduler::beginFrame()

Also found a second/millisecond confusion likely to make animations behave really weirdly. I kind of want to have separate types for these that aren&apos;t implicitly convertible so the compiler can catch these. Someday....

&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateController.cpp:79
&gt; +    m_numBeginFrameCalls++;

i&apos;m not totally sure why this state (the frame count) lives here. What about having it be part of the CCSchedulerStateMachine and updated internally on vsync edges? I don&apos;t think anybody outside of the state machine needs to use this

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:287
&gt; +    return WTF::monotonicallyIncreasingTime() * 1000.0;

no need for WTF:: here since this function is in the global namespace (unless we&apos;re shadowing it)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:111
&gt; +    m_stateMachine.setInsideVSync(frameNumber);
&gt;      processScheduledActions();
&gt; -    m_stateMachine.setInsideVSync(false);
&gt; +    m_stateMachine.setOutsideVSync();

can we just move this block:

if (m_setNeedsRedrawAfterProcessingCommands)
  setNeedsRedraw()

to here? if it&apos;s after the vsync then it should trigger a draw on the next vsync and not this one without needing track frame #s

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:44
&gt; +    bool canDraw = m_currentFrameNumber != m_lastFrameNumberWhereDrawWasCalled;

alternate proposal:

CCSchedulerStateMachine::setNeedsRedraw() can check m_insideVSync and if that is true set

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:111
&gt; +    int m_currentFrameNumber;
&gt;      bool m_needsRedraw;
&gt;      bool m_needsForcedRedraw;
&gt;      bool m_needsCommit;
&gt;      bool m_updateMoreResourcesPending;
&gt;      bool m_insideVSync;
&gt; +    int m_lastFrameNumberWhereDrawWasCalled;

nit: the two new variables look like they should be buddies, can they live next to each other?

also similar types next to each other can help compilers pack the class more tightly (not that it&apos;s a big concern for this class, but a good general habit that most of WebKit follows)

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:466
&gt;&gt; +    m_inputHandlerOnImplThread-&gt;willDraw(WTF::monotonicallyIncreasingTime());
&gt; 
&gt; don&apos;t need WTF:: unless we shadow this function somewhere, it&apos;s in the global namespace (there&apos;s a using declaration in CurrentTime.h)

This is in seconds, but the parameter name is suffixed with &apos;Ms&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506206</commentid>
    <comment_count>4</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-18 16:45:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 115737 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115737&amp;action=review
&gt; 
&gt; I think the frame # logic can be simplified, although there may be a case i&apos;m missing - see comment on CCScheduler::beginFrame()

I agree that if we added some logic to the CCScheduler, we could avoid the frame numbering stuff.

However, the goal of the state machine is to contain the logic. The scheduler, in goal, should be mostly a passthrough. So I had considered the trick you suggested before, but it scared me in two ways:
1. The &quot;falling edge&quot; of the vsync incrementing a state value inside the state machine seemed scary to me.

An alternative way to fix reentrancy in the CCScheduler::processCommands is to updateState(action) before executing the scheduled action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506233</commentid>
    <comment_count>5</comment_count>
      <attachid>115914</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-18 17:20:13 -0800</bug_when>
    <thetext>Created attachment 115914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507104</commentid>
    <comment_count>6</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-21 11:33:05 -0800</bug_when>
    <thetext>I&apos;m going to try triggering on falling edge of vsync. Stand by for another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507144</commentid>
    <comment_count>7</comment_count>
      <attachid>116118</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-21 12:54:27 -0800</bug_when>
    <thetext>Created attachment 116118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507146</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 12:56:47 -0800</bug_when>
    <thetext>Just as a general comment I think frame numbers are probably easier for you to reason about since you have a lot of experience in code that uses them heavily, but since I don&apos;t have that background it can take a bit of extra effort to reason about them.  I think they can be really useful but solutions based on them might seem simpler to you than they do to me, at least at first glance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507288</commentid>
    <comment_count>9</comment_count>
      <attachid>116118</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 15:55:56 -0800</bug_when>
    <thetext>Comment on attachment 116118
Patch

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

R=me

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:85
&gt; +void CCLayerTreeHostImpl::animate(double frameBeginTime)

nit: frameBeginTimeMs please, to help out whoever ends up implementing this stub

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:291
&gt; +    return WTF::monotonicallyIncreasingTime() * 1000.0;

nit: remove WTF:: prefix, this function&apos;s in the global namespace

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:135
&gt; +void WebCompositorImpl::willDraw(double frameBeginTime)

nit: frameBeginTimeMs please to make things clearer for whoever implements the stub

&gt; Source/WebKit/chromium/tests/CCSchedulerStateMachineTest.cpp:223
&gt; +            if (j == 1)
&gt; +                state.didEnterVSync();

for symmetry, should this call didLeaveVSync() if j==0 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507466</commentid>
    <comment_count>10</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-22 01:34:18 -0800</bug_when>
    <thetext>Committed r100984: &lt;http://trac.webkit.org/changeset/100984&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115737</attachid>
            <date>2011-11-17 21:53:58 -0800</date>
            <delta_ts>2011-11-18 17:20:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72688-20111117215357.patch</filename>
            <type>text/plain</type>
            <size>40927</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5MGFlOGIyZjBiNjcw
NGFlZjBkNDA5MTY3MzU1ZThmYmYxZjQ3ZS4uYmQ1ZGQ5ODBlMTIwNjU0YTdiNTljYzVmZjQxOTc5
MzY3NjBmNDdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTExLTE3ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJvdXRlIHdp
bGxEcmF3L3NldE5lZWRzUmVkcmF3IHRvIENDSW5wdXRIYW5kbGVyIGFuZCBmaXggZG91YmxlLWRy
YXdpbmcgaXNzdWVzIHRoYXQgcmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MjY4OAorCisgICAgICAgIFRoaXMgYWxsb3dzIENDSW5wdXRGaWx0
ZXIgYW5kIENDTGF5ZXJUcmVlSG9zdEltcGwgdG8KKyAgICAgICAgcGVyZm9ybSByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUtc3R5bGUgYW5paW1hdGlvbnMuIFRoZSBidWxrIG9mCisgICAgICAgIHdvcmsg
aGVyZSBpcyB0byBtYWtlIHRoZSBzY2hlZHVsZXIgcmVjb3ZlciBncmFjZWZ1bGx5IHdoZW4geW91
CisgICAgICAgIGNhbGwgc2V0TmVlZHNSZWRyYXcgaW5zaWRlIHNjaGVkdWxlZEFjdGlvbkRyYXcu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFt
ZVJhdGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRnJhbWVSYXRlQ29udHJv
bGxlcjo6Q0NGcmFtZVJhdGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRnJhbWVS
YXRlQ29udHJvbGxlcjo6b25UaW1lclRpY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0lucHV0SGFuZGxlclRhcmdldDo6Q0NJbnB1dEhhbmRsZXJUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJUYXJnZXQ6On5DQ0lucHV0SGFuZGxlclRhcmdldCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjdXJyZW50VGlt
ZU1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldE5lZWRzUmVk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OkNDU2NoZWR1bGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpzZXRWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
cjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0SW5zaWRlVlN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE91dHNpZGVW
U3luYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbENvbnRyb2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKwogMjAx
MS0xMS0wNiAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBGaXggaGFuZGxpbmcgb2Ygc2V0TmVlZHNDb21taXQgYW5kIHNldE5lZWRzQW5pbWF0ZSBp
biB0aHJlYWRlZCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDkzNDE5ZTMyYTUz
ZjA3ZTlmNTc0MDE1YzQzMTljYjUyOTBjN2Y3MDEuLmM2YjJmZDA3MGY2NjQ0MTdlMjcxYjQ1OGQ2
NGJkMzIxZjdhZmMzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMTEtMTcgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gUm91dGUgd2lsbERyYXcvc2V0TmVlZHNSZWRyYXcgdG8gQ0NJbnB1dEhhbmRs
ZXIgYW5kIGZpeCBkb3VibGUtZHJhd2luZyBpc3N1ZXMgdGhhdCByZXN1bHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjg4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjpXZWJDb21wb3NpdG9ySW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKiBzcmMv
V2ViQ29tcG9zaXRvckltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvckltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdC5jcHA6
CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudDo6
YmVnaW5GcmFtZSk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1
bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNl
dE5lZWRzRHJhd0luc2lkZURyYXc6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNp
ZGVEcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVl
ZHNEcmF3SW5zaWRlRHJhdzo6c2V0U2NoZWR1bGVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpT
Y2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6bnVtRHJhd3MpOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVE
cmF3OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hl
ZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uQmVn
aW5GcmFtZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5l
ZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFj
dGlvbkNvbW1pdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisKIDIwMTEtMTEtMDYg
IE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRml4
IGhhbmRsaW5nIG9mIHNldE5lZWRzQ29tbWl0IGFuZCBzZXROZWVkc0FuaW1hdGUgaW4gdGhyZWFk
ZWQgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZhNDMzYTkyNzcyOWQzMzc5YTI0YTQ0NWIxMzY1
NjQyMjkyZDVhZGUuLmVmOGYyOTE3MjdiYjcwYzFjMmE0MTljZTVjNTUwMDk2N2JkNDc2MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTM1NzksNyArMzU3OSw2IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njb3BlZFRocmVhZFByb3h5LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcAppbmRl
eCA1YWM5MTg2NThmM2QzN2FhMTZjMmVkODNlMWU3MTdjODFlZjFkMjFhLi40OTgxNWMwZTYyM2U4
NDllNWM3YmE1ZDRlMzBhOGNlMmE4ZmQyOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVS
YXRlQ29udHJvbGxlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgcHJpdmF0ZToKIAogQ0NGcmFtZVJh
dGVDb250cm9sbGVyOjpDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIoUGFzc1JlZlB0cjxDQ1RpbWVTb3Vy
Y2U+IHRpbWVyKQogICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1fbnVtQmVnaW5GcmFtZUNhbGxz
KDApCiAgICAgLCBtX251bUZyYW1lc1BlbmRpbmcoMCkKICAgICAsIG1fbWF4RnJhbWVzUGVuZGlu
ZygwKQogICAgICwgbV90aW1lU291cmNlKHRpbWVyKQpAQCAtNzQsNyArNzUsOCBAQCB2b2lkIEND
RnJhbWVSYXRlQ29udHJvbGxlcjo6b25UaW1lclRpY2soKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5iZWdpbkZyYW1lKCk7CisgICAgICAg
IG1fY2xpZW50LT5iZWdpbkZyYW1lKG1fbnVtQmVnaW5GcmFtZUNhbGxzKTsKKyAgICBtX251bUJl
Z2luRnJhbWVDYWxscysrOwogfQogCiB2b2lkIENDRnJhbWVSYXRlQ29udHJvbGxlcjo6ZGlkQmVn
aW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCmluZGV4IGIy
MjgxMjEzZGFhYTA2NzhmMGE0ZGEzZTQ4ZmQ0YmNlNzBiOWNlNjEuLjNiNTBhYzU1NTBkYzU4MThl
NjJmYmVmNjNjZWFhYWFmMDNhNzE5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29u
dHJvbGxlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q0NGcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5GcmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5GcmFtZShpbnQgZnJhbWVO
dW1iZXIpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNDRnJhbWVSYXRlQ29udHJv
bGxlckNsaWVudCgpIHsgfQpAQCAtNjksNiArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBv
blRpbWVyVGljaygpOwogCiAgICAgQ0NGcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50KiBtX2NsaWVu
dDsKKyAgICBpbnQgbV9udW1CZWdpbkZyYW1lQ2FsbHM7CiAgICAgaW50IG1fbnVtRnJhbWVzUGVu
ZGluZzsKICAgICBpbnQgbV9tYXhGcmFtZXNQZW5kaW5nOwogICAgIFJlZlB0cjxDQ1RpbWVTb3Vy
Y2U+IG1fdGltZVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IGVmYzQwZWI2
NmRjNjlmZTIxNWEzOTY3ZGYyMzhhMTI2YzMwZDNlNzAuLmIxMDY0NDMzYmY5ODBhMGM3ZDYwYzM4
Y2M2YzVhOGNhNjcyNTUyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtMjksMTUg
KzI5LDQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NTY3JvbGxDb250cm9s
bGVyOworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOworCisvLyBUaGUgQ0NJbnB1dEhh
bmxkZXIgaXMgYW4gd2F5IGZvciB0aGUgZW1iZWRkZXJzIHRvIGludGVyYWN0IHdpdGgKKy8vIHRo
ZSBpbXBsIHRocmVhZCBzaWRlIG9mIHRoZSBjb21wb3NpdG9yIGltcGxlbWVudGF0aW9uLgorLy8K
Ky8vIFRoZXJlIGlzIG9uZSBDQ0lucHV0SGFuZGxlciBmb3IgZXZlcnkgQ0NMYXllclRyZWVIb3N0
LiBJdCBpcworLy8gY3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSBpbXBsIHRocmVhZC4KKy8v
CisvLyBUaGUgQ0NJbnB1dEhhbmRsZXIgaXMgY29uc3RydWN0ZWQgd2l0aCBhbiBJbnB1dEhhbmRs
ZXJUYXJnZXQsIHdoaWNoIGlzIHRoZQorLy8gaW50ZXJmYWNlIGJ5IHdoaWNoIHRoZSBoYW5kbGVy
IGNhbiBtYW5pcHVsYXRlIHRoZSBMYXllclRyZWUuCitjbGFzcyBDQ0lucHV0SGFuZGxlclRhcmdl
dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NJbnB1dEhhbmRsZXJUYXJnZXQpOworcHVi
bGljOgorICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lTXMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVn
aW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWdu
aWZ5RGVsdGEsIGNvbnN0IEludFBvaW50JiBhbmNob3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGluY2hHZXN0dXJlRW5kKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgQ0NJbnB1dEhhbmRsZXJU
YXJnZXQoKSB7IH0KKyAgICB2aXJ0dWFsIH5DQ0lucHV0SGFuZGxlclRhcmdldCgpIHsgfQorfTsK
IAogY2xhc3MgQ0NJbnB1dEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSW5w
dXRIYW5kbGVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0lucHV0SGFuZGxl
cj4gY3JlYXRlKENDU2Nyb2xsQ29udHJvbGxlciopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
SW5wdXRIYW5kbGVyPiBjcmVhdGUoQ0NJbnB1dEhhbmRsZXJUYXJnZXQqKTsKICAgICB2aXJ0dWFs
IH5DQ0lucHV0SGFuZGxlcigpIHsgfQogCiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoZG91YmxlIGZyYW1lRGlzcGxheVRp
bWVNcykgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0NJbnB1dEhhbmRsZXIoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggYjNlOTAzMWRhNGE5YWYwODFl
MzIzMWZhMTBjZDU0YzJlZGQ5MTYwNi4uYTU2NTNmNjI1NTkyMGI4NTcyNmM0YzM0NjEwZDM1ZmZl
ODRhZjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI4
Miw2ICsyODIsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRab29tQW5pbWF0b3JU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHoKICAgICBtX3Njcm9sbExheWVy
SW1wbC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb20pOwogfQogCitkb3VibGUgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y3VycmVudFRpbWVNcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7Cit9CisKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c2V0TmVlZHNSZWRyYXcoKQoreworICAgIG1fY2xpZW50LT5zZXROZWVk
c1JlZHJhd09uSW1wbFRocmVhZCgpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNj
cm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKIHsKICAgICBUUkFDRV9F
VkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyIiwgdGhpcywgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYzI5ZmU0ZTA5NDExNTJlNDBl
MGM0ZDJjMmNkZWEyMzdjNDllZDlmNC4uOTYyNmUwMTkxMzAyNjM3YjEzMDc4NDRmY2ZhZjAxYmM3
NDgyNTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMjUsOSAr
MjUsOSBAQAogI2lmbmRlZiBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKICNkZWZpbmUgQ0NMYXllclRy
ZWVIb3N0SW1wbF9oCiAKKyNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oIgotI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogI2lmIFVTRShTS0lBKQpAQCAtNTIsMTUgKzUyLDIwIEBAIHB1YmxpYzoKIH07
CiAKIC8vIENDTGF5ZXJUcmVlSG9zdEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3
ZWxsIGFzIGFzc29jaWF0ZWQgcmVuZGVyaW5nIHN0YXRlCi1jbGFzcyBDQ0xheWVyVHJlZUhvc3RJ
bXBsIDogcHVibGljIENDU2Nyb2xsQ29udHJvbGxlciB7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3RJ
bXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyVGFyZ2V0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDQ0xheWVyVHJlZUhvc3RJbXBsKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsKCk7
CiAKLSAgICAvLyBDQ1Njcm9sbENvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24KKyAgICAvLyBDQ0lu
cHV0SGFuZGxlclRhcmdldCBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgZG91YmxlIGN1cnJl
bnRUaW1lTXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpOworICAgIHZpcnR1YWwgdm9pZCBwaW5j
aEdlc3R1cmVCZWdpbigpOworICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxv
YXQsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgp
OwogCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNv
bW1pdCgpOwpAQCAtMTA0LDkgKzEwOSw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCi0gICAgdmlydHVh
bCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVy
ZVVwZGF0ZShmbG9hdCwgY29uc3QgSW50UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGluY2hH
ZXN0dXJlRW5kKCk7CiAgICAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNz
U2Nyb2xsRGVsdGFzKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRl
eCBiYzBlZTc4YmM4YTg0Y2U4OTAwMTcyYjQ3ZTdiZTRhNjEzNzQ0ZDhkLi5iM2Q2NTI4ZjRlMjI5
Y2I1MDIyZTRlMzhmYjFhY2NlNDY2MjBlZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBA
IC0zMiw2ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENDU2NoZWR1bGVyOjpDQ1NjaGVk
dWxlcihDQ1NjaGVkdWxlckNsaWVudCogY2xpZW50LCBQYXNzT3duUHRyPENDRnJhbWVSYXRlQ29u
dHJvbGxlcj4gZnJhbWVSYXRlQ29udHJvbGxlcikKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAg
ICAsIG1fZnJhbWVSYXRlQ29udHJvbGxlcihmcmFtZVJhdGVDb250cm9sbGVyKQorICAgICwgbV9w
cm9jZXNzaW5nU2NoZWR1bGVkQWN0aW9ucyhmYWxzZSkKKyAgICAsIG1fc2V0TmVlZHNSZWRyYXdB
ZnRlclByb2Nlc3NpbmdDb21tYW5kcyhmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTUwLDEyICs1Miw2
IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIG1f
c3RhdGVNYWNoaW5lLnNldFZpc2libGUodmlzaWJsZSk7CiB9Ci12b2lkIENDU2NoZWR1bGVyOjpz
ZXROZWVkc0FuaW1hdGUoKQotewotICAgIC8vIFN0dWIgdGhyb3VnaCB0byByZXF1ZXN0Q29tbWl0
IGZvciBub3cuCi0gICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9pZCBDQ1NjaGVkdWxlcjo6
c2V0TmVlZHNDb21taXQoKQogewogICAgIG1fc3RhdGVNYWNoaW5lLnNldE5lZWRzQ29tbWl0KCk7
CkBAIC02NCw2ICs2MCwxMCBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0NvbW1pdCgpCiAK
IHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KCkKIHsKKyAgICBpZiAobV9wcm9jZXNz
aW5nU2NoZWR1bGVkQWN0aW9ucykgeworICAgICAgICBtX3NldE5lZWRzUmVkcmF3QWZ0ZXJQcm9j
ZXNzaW5nQ29tbWFuZHMgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fc3Rh
dGVNYWNoaW5lLnNldE5lZWRzUmVkcmF3KCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMo
KTsKIH0KQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNB
Ym9ydCgpCiAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRBYm9ydEFsbFBlbmRpbmdGcmFt
ZXMoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCit2b2lkIENDU2NoZWR1
bGVyOjpiZWdpbkZyYW1lKGludCBmcmFtZU51bWJlcikKIHsKICAgICBpZiAobV91cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZykgewogICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
ID0gZmFsc2U7CkBAIC0xMDYsMjMgKzEwNiwyNiBAQCB2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZy
YW1lKCkKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwg
dGhpcywgMCk7CiAKLSAgICBtX3N0YXRlTWFjaGluZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAg
ICBtX3N0YXRlTWFjaGluZS5zZXRJbnNpZGVWU3luYyhmcmFtZU51bWJlcik7CiAgICAgcHJvY2Vz
c1NjaGVkdWxlZEFjdGlvbnMoKTsKLSAgICBtX3N0YXRlTWFjaGluZS5zZXRJbnNpZGVWU3luYyhm
YWxzZSk7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0T3V0c2lkZVZTeW5jKCk7CiB9CiAKIHZvaWQg
Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKKyAgICBBU1NFUlQoIW1f
cHJvY2Vzc2luZ1NjaGVkdWxlZEFjdGlvbnMpOworCiAgICAgLy8gRWFybHkgb3V0IHNvIHdlIGRv
bid0IHNwYW0gVFJBQ0VfRVZFTlRTIHdpdGggdXNlbGVzcyBwcm9jZXNzU2NoZWR1bGVkQWN0aW9u
cy4KICAgICBpZiAobV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlvbigpID09IENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9wcm9jZXNz
aW5nU2NoZWR1bGVkQWN0aW9ucyA9IHRydWU7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFjdGlvbiBhY3Rpb247CiAgICAgZG8gewogICAgICAgICBhY3Rpb24gPSBtX3N0YXRlTWFjaGlu
ZS5uZXh0QWN0aW9uKCk7CiAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgICAgIGNhc2Ug
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FOgotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRToKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRB
Y3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1MSw2ICsxNTQsMTIg
QEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICB9
CiAKICAgICB9IHdoaWxlIChhY3Rpb24gIT0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FKTsKKyAgICBtX3Byb2Nlc3NpbmdTY2hlZHVsZWRBY3Rpb25zID0gZmFsc2U7CisKKyAg
ICBpZiAobV9zZXROZWVkc1JlZHJhd0FmdGVyUHJvY2Vzc2luZ0NvbW1hbmRzKSB7CisgICAgICAg
IG1fc2V0TmVlZHNSZWRyYXdBZnRlclByb2Nlc3NpbmdDb21tYW5kcyA9IGZhbHNlOworICAgICAg
ICBzZXROZWVkc1JlZHJhdygpOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5k
ZXggMGJlMzcxNzYxODAxZDc4YjJjOTZhMzQ0ZWMzNDRjOGExMjdmMjg2Yi4uODMxNTJkMjNjMzY1
NmY4YzAwZGFlNjU1M2Y5NmExNTVlZDA0ZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC02
MCw3ICs2MCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKIAotICAg
IHZvaWQgc2V0TmVlZHNBbmltYXRlKCk7CiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwogICAg
IHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIApAQCAtNzcsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3
UGVuZGluZygpOyB9CiAKICAgICAvLyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQgaW1wbGVt
ZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5GcmFtZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkZyYW1lKGludCBmcmFtZU51bWJlcik7CiAKIHByaXZhdGU6CiAgICAgQ0NTY2hlZHVs
ZXIoQ0NTY2hlZHVsZXJDbGllbnQqLCBQYXNzT3duUHRyPENDRnJhbWVSYXRlQ29udHJvbGxlcj4p
OwpAQCAtODcsNiArODYsOCBAQCBwcml2YXRlOgogICAgIENDU2NoZWR1bGVyQ2xpZW50KiBtX2Ns
aWVudDsKICAgICBPd25QdHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPiBtX2ZyYW1lUmF0ZUNvbnRy
b2xsZXI7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgbV9zdGF0ZU1hY2hpbmU7CisgICAg
Ym9vbCBtX3Byb2Nlc3NpbmdTY2hlZHVsZWRBY3Rpb25zOworICAgIGJvb2wgbV9zZXROZWVkc1Jl
ZHJhd0FmdGVyUHJvY2Vzc2luZ0NvbW1hbmRzOwogICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmNwcAppbmRleCA2ZjNkOGI3MzYyMGVlZDg0ZGVhMTM2ZmIzYWMyMjMzMDFhZjk3N2M3Li44
OTdhYTE3MDhhMWY5NmU1MjgwNGE1MTAyZmMxMmQwMGY5N2VkZTBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC0zMCwxNiArMzAsMTkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUoKQogICAgIDogbV9jb21taXRTdGF0ZShDT01NSVRfU1RBVEVfSURMRSkKKyAg
ICAsIG1fY3VycmVudEZyYW1lTnVtYmVyKC0xKQogICAgICwgbV9uZWVkc1JlZHJhdyhmYWxzZSkK
ICAgICAsIG1fbmVlZHNGb3JjZWRSZWRyYXcoZmFsc2UpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZh
bHNlKQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1f
aW5zaWRlVlN5bmMoZmFsc2UpCisgICAgLCBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0Nh
bGxlZCgtMSkKICAgICAsIG1fdmlzaWJsZShmYWxzZSkgeyB9CiAKIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25z
dAogewotICAgIGJvb2wgc2hvdWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5
bmMgJiYgbV92aXNpYmxlKSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3OworICAgIGJvb2wgY2FuRHJh
dyA9IG1fY3VycmVudEZyYW1lTnVtYmVyICE9IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2Fz
Q2FsbGVkOworICAgIGJvb2wgc2hvdWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRl
VlN5bmMgJiYgbV92aXNpYmxlICYmIGNhbkRyYXcpIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXc7CiAg
ICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToK
ICAgICAgICAgaWYgKHNob3VsZERyYXcpCkBAIC0xMDAsNiArMTAzLDggQEAgdm9pZCBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAgICBjYXNlIEFD
VElPTl9EUkFXOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7CiAgICAgICAgIG1fbmVl
ZHNGb3JjZWRSZWRyYXcgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1faW5zaWRlVlN5bmMpCisgICAg
ICAgICAgICBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZCA9IG1fY3VycmVudEZy
YW1lTnVtYmVyOwogICAgICAgICBpZiAobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfV0FJ
VElOR19GT1JfRklSU1RfRFJBVykgewogICAgICAgICAgICAgQVNTRVJUKG1fbmVlZHNDb21taXQp
OwogICAgICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9JRExFOwpAQCAtMTA4
LDkgKzExMywxNiBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShB
Y3Rpb24gYWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
c2V0SW5zaWRlVlN5bmMoYm9vbCBpbnNpZGVWU3luYykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OnNldEluc2lkZVZTeW5jKGludCBjdXJyZW50RnJhbWVOdW1iZXIpCiB7Ci0gICAgbV9p
bnNpZGVWU3luYyA9IGluc2lkZVZTeW5jOworICAgIG1fY3VycmVudEZyYW1lTnVtYmVyID0gY3Vy
cmVudEZyYW1lTnVtYmVyOworICAgIG1faW5zaWRlVlN5bmMgPSB0cnVlOworfQorCit2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXRPdXRzaWRlVlN5bmMoKQoreworICAgIG1fY3VycmVu
dEZyYW1lTnVtYmVyID0gLTE7CisgICAgbV9pbnNpZGVWU3luYyA9IGZhbHNlOwogfQogCiB2b2lk
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDE5ZWQyMWRiMzI3N2Jl
MjE1NjI5M2UwNmU3Yjg5ZjMzNzE4ZTJiY2MuLjNlZGZkYmY0YzA1MmZkYjYyZWNiZjhkZmQ1MTcy
NzcyZDg2MWRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
aApAQCAtNjksNyArNjksMTAgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU3RhdGUoQWN0aW9u
KTsKIAogICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzeXN0ZW0gaXMgaW5zaWRlIGEgdnN5
bmMgY2FsbGJhY2suCi0gICAgdm9pZCBzZXRJbnNpZGVWU3luYyhib29sKTsKKyAgICAvLyBUaGUg
ZnJhbWVOdW1iZXIgaW5kaWNhdGVzIHdoaWNoIHZzeW5jIGZyYW1lIHdlIGFyZSBpbnNpZGUsCisg
ICAgLy8gYW5kIGlzIHVzZWQgdG8gcHJldmVudCBkcmF3aW5nIHR3aWNlIHdpdGhpbiB0aGUgc2Ft
ZSB2c3luYyBpbnRlcnZhbC4KKyAgICB2b2lkIHNldEluc2lkZVZTeW5jKGludCBmcmFtZU51bWJl
cik7CisgICAgdm9pZCBzZXRPdXRzaWRlVlN5bmMoKTsKIAogICAgIC8vIEluZGljYXRlcyB3aGV0
aGVyIHRoZSBMYXllclRyZWVIb3N0SW1wbCBpcyB2aXNpYmxlLgogICAgIHZvaWQgc2V0VmlzaWJs
ZShib29sKTsKQEAgLTk5LDExICsxMDIsMTMgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIENv
bW1pdFN0YXRlIG1fY29tbWl0U3RhdGU7CiAKKyAgICBpbnQgbV9jdXJyZW50RnJhbWVOdW1iZXI7
CiAgICAgYm9vbCBtX25lZWRzUmVkcmF3OwogICAgIGJvb2wgbV9uZWVkc0ZvcmNlZFJlZHJhdzsK
ICAgICBib29sIG1fbmVlZHNDb21taXQ7CiAgICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nOwogICAgIGJvb2wgbV9pbnNpZGVWU3luYzsKKyAgICBpbnQgbV9sYXN0RnJhbWVOdW1i
ZXJXaGVyZURyYXdXYXNDYWxsZWQ7CiAgICAgYm9vbCBtX3Zpc2libGU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9s
bENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsQ29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
ODQxZDI0M2E4MDVhMmQwZGZjMjQwNDNlNzk2ODJlYzAwZjhlY2RmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsQ29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDQ1Njcm9sbENvbnRyb2xsZXJf
aAotI2RlZmluZSBDQ1Njcm9sbENvbnRyb2xsZXJfaAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50U2l6ZTsKLQotY2xhc3Mg
Q0NTY3JvbGxDb250cm9sbGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njcm9sbENv
bnRyb2xsZXIpOwotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSb290TGF5ZXIoY29u
c3QgSW50U2l6ZSYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0
IEludFBvaW50JiBhbmNob3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5k
KCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgQ0NTY3JvbGxDb250cm9sbGVyKCkgeyB9Ci0gICAg
dmlydHVhbCB+Q0NTY3JvbGxDb250cm9sbGVyKCkgeyB9Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBkZGMwMWMxNDA5YjhjOTEy
OWQxY2ZhMzkyN2M0NDEzOGRmZTVlYzU1Li5kMTYzZGFiNjQxYzk1N2Y0OGU4NTljYmRlODVmNzRl
ZTIwNzBiZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKLSNpbmNs
dWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKaW5kZXggNWJhYmNlM2Q0NTlmOTM2Y2VkNWRmYTU4YTAxZmM4ZmVlMzkyNjQyOC4u
M2EzNGI2YjZhMDY0MjlmMWIxNWVkZjYxNzY0MThkNDVjODFlYTJmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2Nv
cGVkVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNr
LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC00NjQsNiArNDYzLDggQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAgaWYgKCFt
X2xheWVyVHJlZUhvc3RJbXBsKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2lucHV0SGFuZGxl
ck9uSW1wbFRocmVhZC0+d2lsbERyYXcoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSk7CisKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAKICAgICAvLyBD
aGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNrLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmluZGV4IDgxZGVlMmYxYjI1
YTg3NWI2ZGUxOGEyNTllNzJhNTgwYWM3ZDBhOTMuLmZkNzZjMmJkZDk1NzgzMjQ1MjA4ZmY1ODU4
YzA0YWJlNDA4OTUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW1wbC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDQ1RocmVhZElt
cGwuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5w
dXRFdmVudC5oIgotI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
ImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKQEAgLTM4LDkgKzM4LDkgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0
cjxDQ0lucHV0SGFuZGxlcj4gQ0NJbnB1dEhhbmRsZXI6OmNyZWF0ZShDQ1Njcm9sbENvbnRyb2xs
ZXIqIHNjcm9sbENvbnRyb2xsZXIpCitQYXNzT3duUHRyPENDSW5wdXRIYW5kbGVyPiBDQ0lucHV0
SGFuZGxlcjo6Y3JlYXRlKENDSW5wdXRIYW5kbGVyVGFyZ2V0KiBpbnB1dEhhbmRsZXJUYXJnZXQp
CiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViQ29tcG9zaXRvckltcGw6OmNyZWF0ZShzY3JvbGxD
b250cm9sbGVyKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJDb21wb3NpdG9ySW1wbDo6Y3JlYXRl
KGlucHV0SGFuZGxlclRhcmdldCk7CiB9CiAKIH0KQEAgLTc4LDEwICs3OCwxMCBAQCBXZWJDb21w
b3NpdG9yKiBXZWJDb21wb3NpdG9ySW1wbDo6ZnJvbUlkZW50aWZpZXIoaW50IGlkZW50aWZpZXIp
CiAgICAgcmV0dXJuIDA7CiB9CiAKLVdlYkNvbXBvc2l0b3JJbXBsOjpXZWJDb21wb3NpdG9ySW1w
bChDQ1Njcm9sbENvbnRyb2xsZXIqIHNjcm9sbENvbnRyb2xsZXIpCitXZWJDb21wb3NpdG9ySW1w
bDo6V2ViQ29tcG9zaXRvckltcGwoQ0NJbnB1dEhhbmRsZXJUYXJnZXQqIGlucHV0SGFuZGxlclRh
cmdldCkKICAgICA6IG1fY2xpZW50KDApCiAgICAgLCBtX2lkZW50aWZpZXIoc19uZXh0QXZhaWxh
YmxlSWRlbnRpZmllcisrKQotICAgICwgbV9zY3JvbGxDb250cm9sbGVyKHNjcm9sbENvbnRyb2xs
ZXIpCisgICAgLCBtX2lucHV0SGFuZGxlclRhcmdldChpbnB1dEhhbmRsZXJUYXJnZXQpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIApAQCAtMTE3LDkgKzExNyw5IEBA
IHZvaWQgV2ViQ29tcG9zaXRvckltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRF
dmVudCYgZXZlbnQpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9jbGllbnQpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6
TW91c2VXaGVlbCAmJiAhbV9zY3JvbGxDb250cm9sbGVyLT5oYXZlV2hlZWxFdmVudEhhbmRsZXJz
KCkpIHsKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsICYm
ICFtX2lucHV0SGFuZGxlclRhcmdldC0+aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKSB7CiAgICAg
ICAgIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgd2hlZWxFdmVudCA9ICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpOwotICAgICAgICBtX3Njcm9sbENvbnRy
b2xsZXItPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVs
RXZlbnQuZGVsdGFZKSk7CisgICAgICAgIG1faW5wdXRIYW5kbGVyVGFyZ2V0LT5zY3JvbGxSb290
TGF5ZXIoSW50U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgsIC13aGVlbEV2ZW50LmRlbHRhWSkpOwog
ICAgICAgICBtX2NsaWVudC0+ZGlkSGFuZGxlSW5wdXRFdmVudCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTMyLDQgKzEzMiw4IEBAIGludCBXZWJDb21wb3NpdG9ySW1wbDo6aWRlbnRp
ZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKIH0KIAordm9pZCBXZWJDb21w
b3NpdG9ySW1wbDo6d2lsbERyYXcoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQoreworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuaAppbmRleCBm
NGU0ZTIxZDk0MTU5NmViZDJjODQxZDFhZjEyYTNmYjk2ZTIyNWM4Li5kMDBlYWFmNTUwMDljNzhl
YjE1N2MyNDdmOGVhZmNkNWFiNTVlZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbXBvc2l0b3JJbXBsLmgKQEAgLTM3LDEwICszNyw2IEBAIG5hbWVzcGFjZSBXVEYg
ewogY2xhc3MgTXV0ZXg7CiB9CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENDU2Nyb2xs
Q29udHJvbGxlcjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbXBvc2l0
b3JDbGllbnQ7CkBAIC01MCw5ICs0Niw5IEBAIGNsYXNzIFdlYkNvbXBvc2l0b3JJbXBsIDogcHVi
bGljIFdlYkNvbXBvc2l0b3IsIHB1YmxpYyBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFdlYkNvbXBvc2l0b3IqIGZyb21JZGVudGlmaWVyKGludCBpZGVudGlm
aWVyKTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JJbXBsPiBjcmVhdGUo
V2ViQ29yZTo6Q0NTY3JvbGxDb250cm9sbGVyKiBzY3JvbGxDb250cm9sbGVyKQorICAgIHN0YXRp
YyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JJbXBsPiBjcmVhdGUoV2ViQ29yZTo6Q0NJbnB1dEhh
bmRsZXJUYXJnZXQqIHRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
V2ViQ29tcG9zaXRvckltcGwoc2Nyb2xsQ29udHJvbGxlcikpOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdlYkNvbXBvc2l0b3JJbXBsKHRhcmdldCkpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgfldlYkNvbXBvc2l0b3JJbXBsKCk7CkBAIC02MywxMyArNTksMTQgQEAgcHVibGljOgogCiAg
ICAgLy8gV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFs
IGludCBpZGVudGlmaWVyKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViQ29tcG9zaXRv
ckltcGwoV2ViQ29yZTo6Q0NTY3JvbGxDb250cm9sbGVyKik7CisgICAgZXhwbGljaXQgV2ViQ29t
cG9zaXRvckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJUYXJnZXQqKTsKIAogICAgIFdlYkNv
bXBvc2l0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX2lkZW50aWZpZXI7Ci0gICAgV2Vi
Q29yZTo6Q0NTY3JvbGxDb250cm9sbGVyKiBtX3Njcm9sbENvbnRyb2xsZXI7CisgICAgV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJUYXJnZXQqIG1faW5wdXRIYW5kbGVyVGFyZ2V0OwogCiAgICAgc3Rh
dGljIGludCBzX25leHRBdmFpbGFibGVJZGVudGlmaWVyOwogICAgIHN0YXRpYyBIYXNoU2V0PFdl
YkNvbXBvc2l0b3JJbXBsKj4qIHNfY29tcG9zaXRvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDRnJhbWVSYXRlQ29udHJvbGxlclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJUZXN0LmNwcAppbmRl
eCBhZTQzZDQxYzFjZTAzYWI3MWVjNzBiMGM3NTdiMWVhMzc2ZDBhMGU3Li5mYWQ1MjJjMTRkZjcy
MDEyMzU3NzFlOTk0Mzc5NjA0NDRkNzc0NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDRnJhbWVSYXRlQ29udHJvbGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdC5jcHAKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQoKSB7IG1fZnJhbWVCZWd1biA9IGZh
bHNlOyB9CiAgICAgYm9vbCBmcmFtZUJlZ3VuKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUJlZ3Vu
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5GcmFtZSgpIHsgbV9mcmFtZUJlZ3VuID0gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBiZWdpbkZyYW1lKGludCBmcmFtZU51bWJlcikgeyBtX2Zy
YW1lQmVndW4gPSB0cnVlOyB9CiAKIHByb3RlY3RlZDoKICAgICBib29sIG1fZnJhbWVCZWd1bjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCA2MjZhYTQ1NzY5MTY3OTIxZjkyYzBlZWNmNTU3
MWRlYmE5NGQ2YTE4Li4yYWUwNjRhYjViOWY5NzQ4MmZhYzA4YWE2N2M5YWNmNmVkNGVmODdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC03Niw5ICs3Niw5IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCiAg
ICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKIAotICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
YyhmYWxzZSk7CisgICAgICAgIHN0YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwotICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICAgICAgc3Rh
dGUuc2V0SW5zaWRlVlN5bmMoMSk7CiAgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgfQogCkBAIC0x
MDksNiArMTA5LDI3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0
Rm9yY2VkUmVkcmF3RG9lc05vdFNldHNOb3JtYWxSZWRyYXcpCiAgICAgRVhQRUNUX0ZBTFNFKHN0
YXRlLnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVGcmFtZSkKK3sKKyAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRl
LnNldE5lZWRzUmVkcmF3KCk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVcpOworCisgICAgLy8gV2hpbGUgc3RpbGwgaW4gdGhlIHNhbWUgdnN5bmMgY2Fs
bGJhY2ssIHNldCBuZWVkcyByZWRyYXcgYWdhaW4uCisgICAgLy8gVGhpcyBzaG91bGQgbm90IHJl
ZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAg
ICAvLyBNb3ZlIHRvIGFub3RoZXIgZnJhbWUuIFRoaXMgc2hvdWxkIG5vdyBkcmF3LgorICAgIHN0
YXRlLnNldEluc2lkZVZTeW5jKDIpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRh
dGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOworfQorCiBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMp
CiB7CiAgICAgLy8gV2hlbiBub3Qgb24gdnN5bmMsIG9yIG9uIHZzeW5jIGJ1dCBub3QgdmlzaWJs
ZSwgZG9uJ3QgZHJhdy4KQEAgLTExOCwxMCArMTM5LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKICAgICAgICAgICAgIFN0
YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENv
bW1pdFN0YXRlc1tpXSk7CiAgICAgICAgICAgICBpZiAoIWopIHsKLSAgICAgICAgICAgICAgICBz
dGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRJbnNp
ZGVWU3luYygxKTsKICAgICAgICAgICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKGZhbHNlKTsKICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKIAogICAgICAg
ICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZz1mYWxzZS4KICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKQEAg
LTE1MSw3ICsxNzIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5l
eHRBY3Rpb25EcmF3c09uVlN5bmMpCiAgICAgICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAg
ICAgICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOwogICAg
ICAgICAgICAgaWYgKCFqKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMo
dHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7CiAgICAgICAg
ICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgICAgICAgICAgICAgc3Rh
dGUuc2V0VmlzaWJsZSh0cnVlKTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtMTk4LDcgKzIxOSwx
MCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vQ29tbWl0U3RhdGVz
UmVkcmF3V2hlbkludmlzaWJsZSkKIAogICAgICAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUgYW55
IGRyYXdpbmcgcmVnYXJkbGVzcyBvZiB2c3luYy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IDI7ICsraikgewotICAgICAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoaiA9PSAx
KTsKKyAgICAgICAgICAgIGlmIChqID09IDEpCisgICAgICAgICAgICAgICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmMoMSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUuc2V0
T3V0c2lkZVZTeW5jKCk7CiAKICAgICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFs
c2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCiAgICAgICAgICAgICBzdGF0ZS5z
ZXROZWVkc0NvbW1pdChmYWxzZSk7CkBAIC0yMzIsMjMgKzI1NiwyMyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0
ZXMpCiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBiZWdp
biB1cGRhdGUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCi0gICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0
cnVlKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYygxKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdpbiBhbiB1cGRhdGUuCiAgICAgc3RhdGUu
dXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGRvbid0IGRvIGFueXRoaW5nLCBi
b3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZh
bHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKDEp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdpdGggbm8gbW9yZSB1cGRh
dGVzIHBlbmRpbmcuCiAgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRP
dXRzaWRlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKQEAgLTI2MSwyNyArMjg1LDI3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJh
d19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKIAogICAg
IC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3lu
Yy4KLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUuc2V0T3V0c2lk
ZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0
YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKDEpOwog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFu
IHVwZGF0ZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAKICAgICAvLyBWZXJpZnkgd2Ug
ZG8gbm90aGluZywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KLSAgICBzdGF0ZS5zZXRJ
bnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUuc2V0T3V0c2lkZVZTeW5jKCk7CiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJ
bnNpZGVWU3luYygxKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQWNrIHRoZSB1cGRhdGUg
d2l0aCBtb3JlIHBlbmRpbmcuCiAgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgdXBkYXRlIG1vcmUsIGJvdGggZm9yIHZz
eW5jIGFuZCBub3QgdnN5bmMuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAg
IHN0YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFj
dGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJ
bnNpZGVWU3luYygxKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAK
ICAgICAvLyBCZWdpbiBhbm90aGVyIHVwZGF0ZSwgd2hpbGUgaW5zaWRlIHZzeW5jLiBBbmQsIGl0
IHVwZGF0aW5nLgpAQCAtMjkwLDkgKzMxNCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgc3Rh
dGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gTWFr
ZSBzdXJlIHdlIGNvbW1pdCwgaW5kZXBlbmRlbnQgb2YgdnN5bmMuCi0gICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFj
dGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJ
bnNpZGVWU3luYygxKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKQEAgLTMwOSw3ICszMzMsNyBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJh
d19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAKICAgICAv
LyBFbnN1cmUgd2UgZHJhdyBvbiB0aGUgbmV4dCB2c3luYyBldmVuIHRob3VnaCBhbiB1cGRhdGUg
aXMgaW4tcHJvZ3Jlc3MuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgc3Rh
dGUuc2V0SW5zaWRlVlN5bmMoMSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOwogCkBAIC0zMTcsMjUg
KzM0MSwyNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNf
V2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8g
TGVhdmUgdGhlIHZzeW5jIGJlZm9yZSB3ZSBmaW5pc2ggdGhlIHVwZGF0ZS4KLSAgICBzdGF0ZS5z
ZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUuc2V0T3V0c2lkZVZTeW5jKCk7CiAKICAg
ICAvLyBGaW5pc2ggdXBkYXRlIGJ1dCBsZWF2ZSBtb3JlIHJlc291cmNlcyBwZW5kaW5nLgogICAg
IHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAgLy8g
VmVyaWZ5IHRoYXQgcmVnYXJkbGVzcyBvZiB2c3luYywgd2UgdXBkYXRlIHNvbWUgbW9yZS4KLSAg
ICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUuc2V0T3V0c2lkZVZTeW5j
KCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnNl
dEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKDEpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JF
X1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
YygyKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBC
ZWdpbiBhbm90aGVyIHVwZGF0ZS4gRmluaXNoIGl0IGltbWVkaWF0ZWx5LiBJbnNpZGUgdGhlIHZz
eW5jLgogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOwogICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUuc2V0
T3V0c2lkZVZTeW5jKCk7CiAgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUoZmFsc2UpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5j
IHN0YXRlCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLnNldE91
dHNpZGVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
Yyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9D
T01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC0zNjYsNyArMzkyLDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9U
T19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGNvbW1p
dCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlLgotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZh
bHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAg
ICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtMzc4
LDcgKzQwNCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVl
ZHNDb21taXRJc05vdExvc3QpCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IGFub3RoZXIgY29t
bWl0IHdpbGwgYmVnaW4uCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0
YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCkBAIC00
MTcsMTAgKzQ0MywxMCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1
bGxDeWNsZSkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQXQgdnN5bmMsIGRyYXcuCi0gICAg
c3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsK
KyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKIAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJv
bml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24gbmVlZGVkLgogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOwpAQCAtNDY3LDEwICs0OTMsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gQXQgdnN5bmMsIGRyYXcuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5
bmModHJ1ZSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7CiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsK
ICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRz
aWRlVlN5bmMoKTsKIAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVl
ZGVkLCBubyBhY3Rpb24gbmVlZGVkLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNTI0LDkg
KzU1MCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlz
aWJsZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CiAK
ICAgICAvLyBFeHBlY3QgdG8gZG8gbm90aGluZywgYm90aCBpbiBhbmQgb3V0IG9mIHZzeW5jLgot
ICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5
bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOwor
ICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKDEpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCBj
MWY2ZGMyYzE3NTM1OGY2NTU3MTVjNzhkMTRiMThjZTNjZDcwZDgzLi5iYzJhNDYzM2E2YWNlYjBj
NjI0ODNjODFkMzQzMGEwNzg4YTJlYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC0xMjgsMTIgKzEyOCw1NyBAQCBURVNUKEND
U2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5GcmFtZSkKICAgICBjbGllbnQu
cmVzZXQoKTsKIH0KIAotVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RSZWRyYXcpCi17Ci19
CitjbGFzcyBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyA6IHB1Ymxp
YyBDQ1NjaGVkdWxlckNsaWVudCB7CitwdWJsaWM6CisgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNl
dE5lZWRzRHJhd0luc2lkZURyYXcoKQorICAgICAgICA6IG1fbnVtRHJhd3MoMCkKKyAgICAgICAg
LCBtX3NjaGVkdWxlcigwKSB7IH0KKworICAgIHZvaWQgc2V0U2NoZWR1bGVyKENDU2NoZWR1bGVy
KiBzY2hlZHVsZXIpIHsgbV9zY2hlZHVsZXIgPSBzY2hlZHVsZXI7IH0KKworICAgIGludCBudW1E
cmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0KKworICAgIHZpcnR1YWwgYm9vbCBo
YXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCisgICAgeworICAgICAgICAvLyBPbmx5IHNl
dE5lZWRzUmVkcmF3IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVkCisgICAgICAgIGlmICgh
bV9udW1EcmF3cykKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOwor
ICAgICAgICBtX251bURyYXdzKys7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVkQWN0aW9uQ29tbWl0KCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBpbnQgbV9udW1EcmF3czsK
KyAgICBDQ1NjaGVkdWxlciogbV9zY2hlZHVsZXI7Cit9OwogCi1URVNUKENDU2NoZWR1bGVyVGVz
dCwgUmVxdWVzdFJlZHJhd1dpdGhUd29GcmFtZXNQZW5kaW5nKQorLy8gVGVzdHMgZm9yIHR3byBk
aWZmZXJlbnQgc2l0dWF0aW9uczoKKy8vIDEuIHRoZSBzY2hlZHVsZXIgZHJvcHBpbmcgc2V0TmVl
ZHNSZWRyYXcgcmVxdWVzdHMgdGhhdCBoYXBwZW4gaW5zaWRlCisvLyAgICBhIHNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwCisvLyAyLiB0aGUgc2NoZWR1bGVyIGRyYXdpbmcgdHdpY2UgaW5zaWRl
IGEgc2luZ2xlIHRpY2sKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRl
RHJhdykKIHsKKyAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyBj
bGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJl
ZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVk
dWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVS
YXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2No
ZWR1bGVyLmdldCgpKTsKKyAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisKKyAgICBz
Y2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5y
ZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtRHJhd3MoKSk7CisK
KyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1EcmF3
cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisKKyAg
ICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3cygp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOwogfQogCiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115914</attachid>
            <date>2011-11-18 17:20:13 -0800</date>
            <delta_ts>2011-11-21 12:54:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72688-20111118172012.patch</filename>
            <type>text/plain</type>
            <size>41749</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmOTk0ZDI3NWQzZjk0
NzViYTcwZDcwMjU2NGFkODBmMGE5OWE0ZS4uMDFhNDY2NGNiNTUzZWI3NWEzZWMzOWEyYzhiNGZi
NzIwNTRiZDA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTExLTE3ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJvdXRlIHdp
bGxEcmF3L3NldE5lZWRzUmVkcmF3IHRvIENDSW5wdXRIYW5kbGVyIGFuZCBmaXggZG91YmxlLWRy
YXdpbmcgaXNzdWVzIHRoYXQgcmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MjY4OAorCisgICAgICAgIFRoaXMgYWxsb3dzIENDSW5wdXRGaWx0
ZXIgYW5kIENDTGF5ZXJUcmVlSG9zdEltcGwgdG8KKyAgICAgICAgcGVyZm9ybSByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUtc3R5bGUgYW5pbWF0aW9ucy4gVGhlIGJ1bGsgb2YKKyAgICAgICAgd29yayBo
ZXJlIGlzIHRvIG1ha2UgdGhlIHNjaGVkdWxlciByZWNvdmVyIGdyYWNlZnVsbHkgd2hlbiB5b3UK
KyAgICAgICAgY2FsbCBzZXROZWVkc1JlZHJhdyBpbnNpZGUgc2NoZWR1bGVkQWN0aW9uRHJhdy4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NGcmFtZVJhdGVDb250cm9s
bGVyOjpDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NGcmFtZVJh
dGVDb250cm9sbGVyOjpvblRpbWVyVGljayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDSW5wdXRIYW5kbGVyVGFyZ2V0OjpDQ0lucHV0SGFuZGxlclRhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0lucHV0SGFuZGxlclRhcmdldDo6fkNDSW5wdXRIYW5kbGVyVGFyZ2V0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmN1cnJlbnRUaW1l
TXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0TmVlZHNSZWRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6Q0NTY2hlZHVsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnNldFZpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
Ojpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXRJbnNpZGVWU3luYyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0T3V0c2lkZVZT
eW5jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsQ29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXApOgorCiAyMDEx
LTExLTE4ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gVXNlIGNvcnJlY3QgYmFja2luZyBzdG9yZSBmb3IgQ2hyb21pdW1EYXRhT2JqZWN0
IGluIHBhc3RlYm9hcmQgd3JpdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3Nzlk
ZGJkNzU4MjJkYWNjMmJmZTBiOTcxMDczYmIxYThjNmI4ZDMzLi5kOTMzYWIzNWQzMzgyMjA5Zjdj
OGE4YTgxNzA1MzNjMmVmYWQwY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDExLTExLTE3ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIFJvdXRlIHdpbGxEcmF3L3NldE5lZWRzUmVkcmF3IHRvIENDSW5w
dXRIYW5kbGVyIGFuZCBmaXggZG91YmxlLWRyYXdpbmcgaXNzdWVzIHRoYXQgcmVzdWx0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjY4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkNvbXBv
c2l0b3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW1wbDo6V2ViQ29tcG9zaXRvckltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjp3aWxsRHJhdyk6CisgICAgICAg
ICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3JJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3RzL0NDRnJhbWVSYXRlQ29udHJvbGxlclRl
c3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJD
bGllbnQ6OmJlZ2luRnJhbWUpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVu
dFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNE
cmF3SW5zaWRlRHJhdyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhh
dFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNldFNjaGVkdWxlcik6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6Om51bURyYXdz
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3
SW5zaWRlRHJhdzo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRo
YXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lk
ZURyYXc6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpzY2hl
ZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorCiAyMDEx
LTExLTE4ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gVXNlIGNvcnJlY3QgYmFja2luZyBzdG9yZSBmb3IgQ2hyb21pdW1EYXRhT2JqZWN0
IGluIHBhc3RlYm9hcmQgd3JpdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg4ZDQ1NmM0MzMwNmY1
ZWFkMTkyMDAzMGQxNDAzN2Q1N2IxODg4MzIuLjE1YTg5YmI5NGMzMzJlNmE4OGU5MjllNWVhMWI0
ODk4ZWRkNGIwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1NzksNyArMzU3OSw2IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgnLAotICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsQ29udHJvbGxlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250
cm9sbGVyLmNwcAppbmRleCA1YWM5MTg2NThmM2QzN2FhMTZjMmVkODNlMWU3MTdjODFlZjFkMjFh
Li40OTgxNWMwZTYyM2U4NDllNWM3YmE1ZDRlMzBhOGNlMmE4ZmQyOWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgcHJpdmF0
ZToKIAogQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIoUGFzc1Jl
ZlB0cjxDQ1RpbWVTb3VyY2U+IHRpbWVyKQogICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1fbnVt
QmVnaW5GcmFtZUNhbGxzKDApCiAgICAgLCBtX251bUZyYW1lc1BlbmRpbmcoMCkKICAgICAsIG1f
bWF4RnJhbWVzUGVuZGluZygwKQogICAgICwgbV90aW1lU291cmNlKHRpbWVyKQpAQCAtNzQsNyAr
NzUsOCBAQCB2b2lkIENDRnJhbWVSYXRlQ29udHJvbGxlcjo6b25UaW1lclRpY2soKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5iZWdpbkZy
YW1lKCk7CisgICAgICAgIG1fY2xpZW50LT5iZWdpbkZyYW1lKG1fbnVtQmVnaW5GcmFtZUNhbGxz
KTsKKyAgICBtX251bUJlZ2luRnJhbWVDYWxscysrOwogfQogCiB2b2lkIENDRnJhbWVSYXRlQ29u
dHJvbGxlcjo6ZGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJv
bGxlci5oCmluZGV4IGIyMjgxMjEzZGFhYTA2NzhmMGE0ZGEzZTQ4ZmQ0YmNlNzBiOWNlNjEuLjNi
NTBhYzU1NTBkYzU4MThlNjJmYmVmNjNjZWFhYWFmMDNhNzE5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ0NGcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5GcmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5G
cmFtZShpbnQgZnJhbWVOdW1iZXIpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkND
RnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCgpIHsgfQpAQCAtNjksNiArNjksNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBvblRpbWVyVGljaygpOwogCiAgICAgQ0NGcmFtZVJhdGVDb250cm9sbGVy
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBpbnQgbV9udW1CZWdpbkZyYW1lQ2FsbHM7CiAgICAgaW50
IG1fbnVtRnJhbWVzUGVuZGluZzsKICAgICBpbnQgbV9tYXhGcmFtZXNQZW5kaW5nOwogICAgIFJl
ZlB0cjxDQ1RpbWVTb3VyY2U+IG1fdGltZVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5o
CmluZGV4IGVmYzQwZWI2NmRjNjlmZTIxNWEzOTY3ZGYyMzhhMTI2YzMwZDNlNzAuLmZhY2JiZTVj
ZmFiZGZkMDhlNjU5NTkyY2ZmMWJjYzQ1M2VjZDdkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRs
ZXIuaApAQCAtMjksMTUgKzI5LDQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q0NTY3JvbGxDb250cm9sbGVyOworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOworCisv
LyBUaGUgQ0NJbnB1dEhhbmRsZXIgaXMgYSB3YXkgZm9yIHRoZSBlbWJlZGRlcnMgdG8gaW50ZXJh
Y3Qgd2l0aAorLy8gdGhlIGltcGwgdGhyZWFkIHNpZGUgb2YgdGhlIGNvbXBvc2l0b3IgaW1wbGVt
ZW50YXRpb24uCisvLworLy8gVGhlcmUgaXMgb25lIENDSW5wdXRIYW5kbGVyIGZvciBldmVyeSBD
Q0xheWVyVHJlZUhvc3QuIEl0IGlzCisvLyBjcmVhdGVkIGFuZCB1c2VkIG9ubHkgb24gdGhlIGlt
cGwgdGhyZWFkLgorLy8KKy8vIFRoZSBDQ0lucHV0SGFuZGxlciBpcyBjb25zdHJ1Y3RlZCB3aXRo
IGFuIElucHV0SGFuZGxlckNsaWVudCwgd2hpY2ggaXMgdGhlCisvLyBpbnRlcmZhY2UgYnkgd2hp
Y2ggdGhlIGhhbmRsZXIgY2FuIG1hbmlwdWxhdGUgdGhlIExheWVyVHJlZS4KK2NsYXNzIENDSW5w
dXRIYW5kbGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0lucHV0SGFuZGxl
ckNsaWVudCk7CitwdWJsaWM6CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVNcygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
aW5jaEdlc3R1cmVCZWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBk
YXRlKGZsb2F0IG1hZ25pZnlEZWx0YSwgY29uc3QgSW50UG9pbnQmIGFuY2hvcikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVFbmQoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBD
Q0lucHV0SGFuZGxlckNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgfkNDSW5wdXRIYW5kbGVyQ2xp
ZW50KCkgeyB9Cit9OwogCiBjbGFzcyBDQ0lucHV0SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ0NJbnB1dEhhbmRsZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDSW5wdXRIYW5kbGVyPiBjcmVhdGUoQ0NTY3JvbGxDb250cm9sbGVyKik7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IGNyZWF0ZShDQ0lucHV0SGFuZGxlckNsaWVudCop
OwogICAgIHZpcnR1YWwgfkNDSW5wdXRIYW5kbGVyKCkgeyB9CiAKICAgICB2aXJ0dWFsIGludCBp
ZGVudGlmaWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUg
ZnJhbWVEaXNwbGF5VGltZU1zKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBDQ0lucHV0SGFuZGxl
cigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBiM2U5
MDMxZGE0YTlhZjA4MWUzMjMxZmExMGNkNTRjMmVkZDkxNjA2Li41ZDc3OTQ5NjFiZWUzYWRjZjVk
NmE2NjgzNThhN2FmYTUwZTE0NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcApAQCAtODIsNiArODIsMTAgQEAgR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNvbnRleHQoKQogICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVy
UmVuZGVyZXItPmNvbnRleHQoKSA6IDA7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpCit7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6ZHJhd0xheWVycygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dEltcGw6OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKQEAgLTI4Miw2ICsyODYsMTYgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHoKICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0Wm9vbUFuaW1hdG9y
VHJhbnNmb3JtKHpvb20pOwogfQogCitkb3VibGUgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3VycmVu
dFRpbWVNcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCkgKiAxMDAwLjA7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0TmVl
ZHNSZWRyYXcoKQoreworICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgp
OworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbFJvb3RMYXllcihjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0
SW1wbDo6c2Nyb2xsUm9vdExheWVyIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKaW5kZXggYzI5ZmU0ZTA5NDExNTJlNDBlMGM0ZDJjMmNkZWEyMzdjNDllZDlm
NC4uY2E0ZjcxYmQ4NmFhMzI5NDU0NWVmOTdiYWQ3YmJhMWRlNzk2YjdlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMjUsOSArMjUsOSBAQAogI2lmbmRlZiBDQ0xh
eWVyVHJlZUhvc3RJbXBsX2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0SW1wbF9oCiAKKyNpbmNs
dWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgotI2luY2x1ZGUgImNjL0ND
U2Nyb2xsQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFVTRShT
S0lBKQpAQCAtNTIsMTkgKzUyLDI1IEBAIHB1YmxpYzoKIH07CiAKIC8vIENDTGF5ZXJUcmVlSG9z
dEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVu
ZGVyaW5nIHN0YXRlCi1jbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDU2Nyb2xs
Q29udHJvbGxlciB7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRI
YW5kbGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3RJ
bXBsKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsK
ICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsKCk7CiAKLSAgICAvLyBDQ1Njcm9sbENv
bnRyb2xsZXIgaW1wbGVtZW50YXRpb24KKyAgICAvLyBDQ0lucHV0SGFuZGxlclRhcmdldCBpbXBs
ZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lTXMoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
Um9vdExheWVyKGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZl
bnRIYW5kbGVycygpOworICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpOworICAg
IHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IEludFBvaW50Jik7
CisgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwogCiAgICAgLy8gVmlydHVhbCBm
b3IgdGVzdGluZwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwogICAgIHZpcnR1YWwg
dm9pZCBjb21taXRDb21wbGV0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBm
cmFtZURpc3BsYXlUaW1lTXMpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwpAQCAtMTA0LDkgKzExMCw2IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXR0aW5nczsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCwgY29uc3QgSW50UG9pbnQmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCk7CiAgICAgUGFzc093blB0cjxDQ1Nj
cm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCBiYzBlZTc4YmM4YTg0Y2U4OTAwMTcyYjQ3ZTdiZTRh
NjEzNzQ0ZDhkLi5iM2Q2NTI4ZjRlMjI5Y2I1MDIyZTRlMzhmYjFhY2NlNDY2MjBlZmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIENDU2NoZWR1bGVyOjpDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCogY2xpZW50LCBQ
YXNzT3duUHRyPENDRnJhbWVSYXRlQ29udHJvbGxlcj4gZnJhbWVSYXRlQ29udHJvbGxlcikKICAg
ICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZnJhbWVSYXRlQ29udHJvbGxlcihmcmFtZVJh
dGVDb250cm9sbGVyKQorICAgICwgbV9wcm9jZXNzaW5nU2NoZWR1bGVkQWN0aW9ucyhmYWxzZSkK
KyAgICAsIG1fc2V0TmVlZHNSZWRyYXdBZnRlclByb2Nlc3NpbmdDb21tYW5kcyhmYWxzZSkKICAg
ICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1f
Y2xpZW50KTsKQEAgLTUwLDEyICs1Miw2IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldFZpc2libGUo
Ym9vbCB2aXNpYmxlKQogewogICAgIG1fc3RhdGVNYWNoaW5lLnNldFZpc2libGUodmlzaWJsZSk7
CiB9Ci12b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0FuaW1hdGUoKQotewotICAgIC8vIFN0dWIg
dGhyb3VnaCB0byByZXF1ZXN0Q29tbWl0IGZvciBub3cuCi0gICAgc2V0TmVlZHNDb21taXQoKTsK
LX0KLQogdm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHNDb21taXQoKQogewogICAgIG1fc3RhdGVN
YWNoaW5lLnNldE5lZWRzQ29tbWl0KCk7CkBAIC02NCw2ICs2MCwxMCBAQCB2b2lkIENDU2NoZWR1
bGVyOjpzZXROZWVkc0NvbW1pdCgpCiAKIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3
KCkKIHsKKyAgICBpZiAobV9wcm9jZXNzaW5nU2NoZWR1bGVkQWN0aW9ucykgeworICAgICAgICBt
X3NldE5lZWRzUmVkcmF3QWZ0ZXJQcm9jZXNzaW5nQ29tbWFuZHMgPSB0cnVlOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIG1fc3RhdGVNYWNoaW5lLnNldE5lZWRzUmVkcmF3KCk7CiAgICAg
cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBDQ1Nj
aGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpCiAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVy
LT5kaWRBYm9ydEFsbFBlbmRpbmdGcmFtZXMoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6YmVn
aW5GcmFtZSgpCit2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKGludCBmcmFtZU51bWJlcikK
IHsKICAgICBpZiAobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykgewogICAgICAgICBtX3Vw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7CkBAIC0xMDYsMjMgKzEwNiwyNiBAQCB2
b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKCkKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQoIkND
U2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAKLSAgICBtX3N0YXRlTWFjaGluZS5z
ZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRJbnNpZGVWU3luYyhm
cmFtZU51bWJlcik7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKLSAgICBtX3N0YXRl
TWFjaGluZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0T3V0
c2lkZVZTeW5jKCk7CiB9CiAKIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rp
b25zKCkKIHsKKyAgICBBU1NFUlQoIW1fcHJvY2Vzc2luZ1NjaGVkdWxlZEFjdGlvbnMpOworCiAg
ICAgLy8gRWFybHkgb3V0IHNvIHdlIGRvbid0IHNwYW0gVFJBQ0VfRVZFTlRTIHdpdGggdXNlbGVz
cyBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucy4KICAgICBpZiAobV9zdGF0ZU1hY2hpbmUubmV4dEFj
dGlvbigpID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgbV9wcm9jZXNzaW5nU2NoZWR1bGVkQWN0aW9ucyA9IHRydWU7CiAgICAg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBhY3Rpb247CiAgICAgZG8gewogICAgICAg
ICBhY3Rpb24gPSBtX3N0YXRlTWFjaGluZS5uZXh0QWN0aW9uKCk7CiAgICAgICAgIHN3aXRjaCAo
YWN0aW9uKSB7CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FOgotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRToKICAgICAgICAg
ICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE1MSw2ICsxNTQsMTIgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMoKQogICAgICAgICB9CiAKICAgICB9IHdoaWxlIChhY3Rpb24gIT0gQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FKTsKKyAgICBtX3Byb2Nlc3NpbmdTY2hlZHVs
ZWRBY3Rpb25zID0gZmFsc2U7CisKKyAgICBpZiAobV9zZXROZWVkc1JlZHJhd0FmdGVyUHJvY2Vz
c2luZ0NvbW1hbmRzKSB7CisgICAgICAgIG1fc2V0TmVlZHNSZWRyYXdBZnRlclByb2Nlc3NpbmdD
b21tYW5kcyA9IGZhbHNlOworICAgICAgICBzZXROZWVkc1JlZHJhdygpOworICAgIH0KIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggMGJlMzcxNzYxODAxZDc4YjJjOTZhMzQ0ZWMzNDRj
OGExMjdmMjg2Yi4uODMxNTJkMjNjMzY1NmY4YzAwZGFlNjU1M2Y5NmExNTVlZDA0ZWI1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0VmlzaWJsZShib29sKTsKIAotICAgIHZvaWQgc2V0TmVlZHNBbmltYXRlKCk7CiAgICAgdm9p
ZCBzZXROZWVkc0NvbW1pdCgpOwogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIApAQCAtNzcs
NyArNzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9CiAKICAgICAvLyBDQ0ZyYW1lUmF0
ZUNvbnRyb2xsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5G
cmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkZyYW1lKGludCBmcmFtZU51bWJlcik7CiAK
IHByaXZhdGU6CiAgICAgQ0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQqLCBQYXNzT3duUHRy
PENDRnJhbWVSYXRlQ29udHJvbGxlcj4pOwpAQCAtODcsNiArODYsOCBAQCBwcml2YXRlOgogICAg
IENDU2NoZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8Q0NGcmFtZVJhdGVDb250
cm9sbGVyPiBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXI7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUgbV9zdGF0ZU1hY2hpbmU7CisgICAgYm9vbCBtX3Byb2Nlc3NpbmdTY2hlZHVsZWRBY3Rpb25z
OworICAgIGJvb2wgbV9zZXROZWVkc1JlZHJhd0FmdGVyUHJvY2Vzc2luZ0NvbW1hbmRzOwogICAg
IGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA2ZjNkOGI3MzYyMGVlZDg0ZGVh
MTM2ZmIzYWMyMjMzMDFhZjk3N2M3Li41YTJkNTVmNzZhY2Q4MTUwNTc0MDAwOTU2N2E3YjRiMTIw
YmQ4NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3Bw
CkBAIC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKICAgICA6IG1fY29tbWl0U3RhdGUo
Q09NTUlUX1NUQVRFX0lETEUpCisgICAgLCBtX2N1cnJlbnRGcmFtZU51bWJlcigtMSkKKyAgICAs
IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkKC0xKQogICAgICwgbV9uZWVkc1Jl
ZHJhdyhmYWxzZSkKICAgICAsIG1fbmVlZHNGb3JjZWRSZWRyYXcoZmFsc2UpCiAgICAgLCBtX25l
ZWRzQ29tbWl0KGZhbHNlKQpAQCAtMzksNyArNDEsOCBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKIHsKLSAg
ICBib29sIHNob3VsZERyYXcgPSAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIG1f
dmlzaWJsZSkgfHwgbV9uZWVkc0ZvcmNlZFJlZHJhdzsKKyAgICBib29sIGNhbkRyYXcgPSBtX2N1
cnJlbnRGcmFtZU51bWJlciAhPSBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZDsK
KyAgICBib29sIHNob3VsZERyYXcgPSAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYm
IG1fdmlzaWJsZSAmJiBjYW5EcmF3KSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3OwogICAgIHN3aXRj
aCAobV9jb21taXRTdGF0ZSkgewogICAgIGNhc2UgQ09NTUlUX1NUQVRFX0lETEU6CiAgICAgICAg
IGlmIChzaG91bGREcmF3KQpAQCAtMTAwLDYgKzEwMyw4IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgY2FzZSBBQ1RJT05fRFJB
VzoKICAgICAgICAgbV9uZWVkc1JlZHJhdyA9IGZhbHNlOwogICAgICAgICBtX25lZWRzRm9yY2Vk
UmVkcmF3ID0gZmFsc2U7CisgICAgICAgIGlmIChtX2luc2lkZVZTeW5jKQorICAgICAgICAgICAg
bV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXNDYWxsZWQgPSBtX2N1cnJlbnRGcmFtZU51bWJl
cjsKICAgICAgICAgaWYgKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9S
X0ZJUlNUX0RSQVcpIHsKICAgICAgICAgICAgIEFTU0VSVChtX25lZWRzQ29tbWl0KTsKICAgICAg
ICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfSURMRTsKQEAgLTEwOCw5ICsxMTMs
MTYgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFj
dGlvbikKICAgICB9CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldEluc2lk
ZVZTeW5jKGJvb2wgaW5zaWRlVlN5bmMpCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpz
ZXRJbnNpZGVWU3luYyhpbnQgY3VycmVudEZyYW1lTnVtYmVyKQogewotICAgIG1faW5zaWRlVlN5
bmMgPSBpbnNpZGVWU3luYzsKKyAgICBtX2N1cnJlbnRGcmFtZU51bWJlciA9IGN1cnJlbnRGcmFt
ZU51bWJlcjsKKyAgICBtX2luc2lkZVZTeW5jID0gdHJ1ZTsKK30KKwordm9pZCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6c2V0T3V0c2lkZVZTeW5jKCkKK3sKKyAgICBtX2N1cnJlbnRGcmFtZU51
bWJlciA9IC0xOworICAgIG1faW5zaWRlVlN5bmMgPSBmYWxzZTsKIH0KIAogdm9pZCBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAppbmRleCAxOWVkMjFkYjMyNzdiZTIxNTYyOTNl
MDZlN2I4OWYzMzcxOGUyYmNjLi5jY2Y0MDc3ZmEyNzJjZTVkNTZkNTllZTU1NGI2MzAxZGM5ZDY4
MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTY5
LDcgKzY5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVN0YXRlKEFjdGlvbik7CiAKICAg
ICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc3lzdGVtIGlzIGluc2lkZSBhIHZzeW5jIGNhbGxi
YWNrLgotICAgIHZvaWQgc2V0SW5zaWRlVlN5bmMoYm9vbCk7CisgICAgLy8gVGhlIGZyYW1lTnVt
YmVyIGluZGljYXRlcyB3aGljaCB2c3luYyBmcmFtZSB3ZSBhcmUgaW5zaWRlLAorICAgIC8vIGFu
ZCBpcyB1c2VkIHRvIHByZXZlbnQgZHJhd2luZyB0d2ljZSB3aXRoaW4gdGhlIHNhbWUgdnN5bmMg
aW50ZXJ2YWwuCisgICAgdm9pZCBzZXRJbnNpZGVWU3luYyhpbnQgZnJhbWVOdW1iZXIpOworICAg
IHZvaWQgc2V0T3V0c2lkZVZTeW5jKCk7CiAKICAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUg
TGF5ZXJUcmVlSG9zdEltcGwgaXMgdmlzaWJsZS4KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7
CkBAIC05OSw2ICsxMDIsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUg
bV9jb21taXRTdGF0ZTsKIAorICAgIGludCBtX2N1cnJlbnRGcmFtZU51bWJlcjsKKyAgICBpbnQg
bV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXNDYWxsZWQ7CiAgICAgYm9vbCBtX25lZWRzUmVk
cmF3OwogICAgIGJvb2wgbV9uZWVkc0ZvcmNlZFJlZHJhdzsKICAgICBib29sIG1fbmVlZHNDb21t
aXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsQ29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjODQxZDI0M2E4MDVhMmQwZGZjMjQwNDNlNzk2ODJlYzAwZjhlY2RmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsQ29udHJvbGxlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDQ1Njcm9s
bENvbnRyb2xsZXJfaAotI2RlZmluZSBDQ1Njcm9sbENvbnRyb2xsZXJfaAotCi0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50U2l6
ZTsKLQotY2xhc3MgQ0NTY3JvbGxDb250cm9sbGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ1Njcm9sbENvbnRyb2xsZXIpOwotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxS
b290TGF5ZXIoY29uc3QgSW50U2l6ZSYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVs
RXZlbnRIYW5kbGVycygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4o
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5
RGVsdGEsIGNvbnN0IEludFBvaW50JiBhbmNob3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGlu
Y2hHZXN0dXJlRW5kKCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgQ0NTY3JvbGxDb250cm9sbGVy
KCkgeyB9Ci0gICAgdmlydHVhbCB+Q0NTY3JvbGxDb250cm9sbGVyKCkgeyB9Ci19OwotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBkZGMw
MWMxNDA5YjhjOTEyOWQxY2ZhMzkyN2M0NDEzOGRmZTVlYzU1Li43MmJlYzJhNzE2NjRhZjQzY2Q2
NGQwMTRkMjhiODQyNjUwOTViMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKLSNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTI4
NCw2ICsyODMsOCBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKIAog
ICAgIHsKICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOworICAgICAgZG91Ymxl
IGZyYW1lRGlzcGxheVRpbWVNcyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAw
MC4wOworICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShmcmFtZURpc3BsYXlUaW1l
TXMpOwogICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA5NWM2YjVkYTUzOTNjNDhjOWM5NDBkYjVk
NDA1MDVkNTE2MmNjMDc5Li44ZTc3NDI1ZTQ0MGE0ZWRjZjI5ZjI2NWFjM2U5ZWVmZGJlMjE1ZDg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDU2Nyb2xs
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTQ2
NCw2ICs0NjMsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCgpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQogICAgICAgICByZXR1cm47CiAK
KyAgICAvLyBGSVhNRTogY29tcHV0ZSB0aGUgZnJhbWUgZGlzcGxheSB0aW1lIG1vcmUgaW50ZWxs
aWdlbnRseQorICAgIGRvdWJsZSBmcmFtZURpc3BsYXlUaW1lTXMgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSAqIDEwMDAuMDsKKworICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFk
LT53aWxsRHJhdyhmcmFtZURpc3BsYXlUaW1lTXMpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmFuaW1hdGUoZnJhbWVEaXNwbGF5VGltZU1zKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5k
cmF3TGF5ZXJzKCk7CiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJl
YWRiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9z
aXRvckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklt
cGwuY3BwCmluZGV4IDgxZGVlMmYxYjI1YTg3NWI2ZGUxOGEyNTllNzJhNTgwYWM3ZDBhOTMuLjgx
NTI4MWM3MzRkMzBjYWNlNTAyY2RlNjZjYjViNzRiNjBlOWY3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlICJDQ1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgotI2luY2x1ZGUgImNjL0NDU2Nyb2xs
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+
CiAKQEAgLTM4LDkgKzM4LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ0lucHV0SGFuZGxlcj4gQ0NJbnB1dEhhbmRsZXI6
OmNyZWF0ZShDQ1Njcm9sbENvbnRyb2xsZXIqIHNjcm9sbENvbnRyb2xsZXIpCitQYXNzT3duUHRy
PENDSW5wdXRIYW5kbGVyPiBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKENDSW5wdXRIYW5kbGVyQ2xp
ZW50KiBpbnB1dEhhbmRsZXJDbGllbnQpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViQ29tcG9z
aXRvckltcGw6OmNyZWF0ZShzY3JvbGxDb250cm9sbGVyKTsKKyAgICByZXR1cm4gV2ViS2l0OjpX
ZWJDb21wb3NpdG9ySW1wbDo6Y3JlYXRlKGlucHV0SGFuZGxlckNsaWVudCk7CiB9CiAKIH0KQEAg
LTc4LDEwICs3OCwxMCBAQCBXZWJDb21wb3NpdG9yKiBXZWJDb21wb3NpdG9ySW1wbDo6ZnJvbUlk
ZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVdlYkNvbXBvc2l0
b3JJbXBsOjpXZWJDb21wb3NpdG9ySW1wbChDQ1Njcm9sbENvbnRyb2xsZXIqIHNjcm9sbENvbnRy
b2xsZXIpCitXZWJDb21wb3NpdG9ySW1wbDo6V2ViQ29tcG9zaXRvckltcGwoQ0NJbnB1dEhhbmRs
ZXJDbGllbnQqIGlucHV0SGFuZGxlckNsaWVudCkKICAgICA6IG1fY2xpZW50KDApCiAgICAgLCBt
X2lkZW50aWZpZXIoc19uZXh0QXZhaWxhYmxlSWRlbnRpZmllcisrKQotICAgICwgbV9zY3JvbGxD
b250cm9sbGVyKHNjcm9sbENvbnRyb2xsZXIpCisgICAgLCBtX2lucHV0SGFuZGxlckNsaWVudChp
bnB1dEhhbmRsZXJDbGllbnQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgp
KTsKIApAQCAtMTE3LDkgKzExNyw5IEBAIHZvaWQgV2ViQ29tcG9zaXRvckltcGw6OmhhbmRsZUlu
cHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiAgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCi0gICAgaWYgKGV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9zY3JvbGxDb250cm9sbGVy
LT5oYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkpIHsKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJ
bnB1dEV2ZW50OjpNb3VzZVdoZWVsICYmICFtX2lucHV0SGFuZGxlckNsaWVudC0+aGF2ZVdoZWVs
RXZlbnRIYW5kbGVycygpKSB7CiAgICAgICAgIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQqPigmZXZlbnQp
OwotICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXItPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKC13
aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CisgICAgICAgIG1faW5wdXRI
YW5kbGVyQ2xpZW50LT5zY3JvbGxSb290TGF5ZXIoSW50U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgs
IC13aGVlbEV2ZW50LmRlbHRhWSkpOwogICAgICAgICBtX2NsaWVudC0+ZGlkSGFuZGxlSW5wdXRF
dmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMyLDQgKzEzMiw4IEBAIGludCBX
ZWJDb21wb3NpdG9ySW1wbDo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcjsKIH0KIAordm9pZCBXZWJDb21wb3NpdG9ySW1wbDo6d2lsbERyYXcoZG91YmxlIGZyYW1l
QmVnaW5UaW1lKQoreworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29tcG9zaXRvckltcGwuaAppbmRleCBmNGU0ZTIxZDk0MTU5NmViZDJjODQxZDFhZjEyYTNmYjk2
ZTIyNWM4Li5iZGUwOTY4OWM5NDVlOTdiODQ2Y2JlNTY4OTdlMDk3MTgzNWRiYzFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmgKQEAgLTM3LDEw
ICszNyw2IEBAIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTXV0ZXg7CiB9CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIENDU2Nyb2xsQ29udHJvbGxlcjsKLX0KLQogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYkNvbXBvc2l0b3JDbGllbnQ7CkBAIC01MCw5ICs0Niw5IEBAIGNsYXNz
IFdlYkNvbXBvc2l0b3JJbXBsIDogcHVibGljIFdlYkNvbXBvc2l0b3IsIHB1YmxpYyBXZWJDb3Jl
OjpDQ0lucHV0SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkNvbXBvc2l0b3IqIGZy
b21JZGVudGlmaWVyKGludCBpZGVudGlmaWVyKTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YkNvbXBvc2l0b3JJbXBsPiBjcmVhdGUoV2ViQ29yZTo6Q0NTY3JvbGxDb250cm9sbGVyKiBzY3Jv
bGxDb250cm9sbGVyKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JJbXBsPiBj
cmVhdGUoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqIGNsaWVudCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvckltcGwoc2Nyb2xsQ29udHJvbGxl
cikpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JJbXBsKGNsaWVu
dCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JJbXBsKCk7CkBAIC02Mywx
MyArNTksMTQgQEAgcHVibGljOgogCiAgICAgLy8gV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXIgaW1w
bGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGludCBpZGVudGlmaWVyKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgV2ViQ29tcG9zaXRvckltcGwoV2ViQ29yZTo6Q0NTY3JvbGxDb250cm9sbGVy
Kik7CisgICAgZXhwbGljaXQgV2ViQ29tcG9zaXRvckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXJDbGllbnQqKTsKIAogICAgIFdlYkNvbXBvc2l0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIGlu
dCBtX2lkZW50aWZpZXI7Ci0gICAgV2ViQ29yZTo6Q0NTY3JvbGxDb250cm9sbGVyKiBtX3Njcm9s
bENvbnRyb2xsZXI7CisgICAgV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqIG1faW5wdXRI
YW5kbGVyQ2xpZW50OwogCiAgICAgc3RhdGljIGludCBzX25leHRBdmFpbGFibGVJZGVudGlmaWVy
OwogICAgIHN0YXRpYyBIYXNoU2V0PFdlYkNvbXBvc2l0b3JJbXBsKj4qIHNfY29tcG9zaXRvcnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRnJhbWVSYXRlQ29u
dHJvbGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0ZyYW1lUmF0
ZUNvbnRyb2xsZXJUZXN0LmNwcAppbmRleCBhZTQzZDQxYzFjZTAzYWI3MWVjNzBiMGM3NTdiMWVh
Mzc2ZDBhMGU3Li5mYWQ1MjJjMTRkZjcyMDEyMzU3NzFlOTk0Mzc5NjA0NDRkNzc0NmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRnJhbWVSYXRlQ29udHJvbGxl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NGcmFtZVJhdGVD
b250cm9sbGVyVGVzdC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
ZXQoKSB7IG1fZnJhbWVCZWd1biA9IGZhbHNlOyB9CiAgICAgYm9vbCBmcmFtZUJlZ3VuKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZUJlZ3VuOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5GcmFt
ZSgpIHsgbV9mcmFtZUJlZ3VuID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBiZWdpbkZyYW1l
KGludCBmcmFtZU51bWJlcikgeyBtX2ZyYW1lQmVndW4gPSB0cnVlOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBib29sIG1fZnJhbWVCZWd1bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCA2MjZh
YTQ1NzY5MTY3OTIxZjkyYzBlZWNmNTU3MWRlYmE5NGQ2YTE4Li4yYWUwNjRhYjViOWY5NzQ4MmZh
YzA4YWE2N2M5YWNmNmVkNGVmODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC03Niw5
ICs3Niw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlv
bkJlZ2luc0ZyYW1lSWZOZWVkZWQpCiAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nKGZhbHNlKTsKICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKIAotICAg
ICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgICAgIHN0YXRlLnNldE91dHNp
ZGVWU3luYygpOwogICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgICAgICBzdGF0ZS5zZXRJbnNpZGVW
U3luYyh0cnVlKTsKKyAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7CiAgICAgICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CiAgICAgfQogCkBAIC0xMDksNiArMTA5LDI3IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0Rm9yY2VkUmVkcmF3RG9lc05vdFNldHNOb3JtYWxSZWRy
YXcpCiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAKK1RFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVGcmFt
ZSkKK3sKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRW
aXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CisgICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmMoMSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOworCisgICAgLy8gV2hpbGUgc3Rp
bGwgaW4gdGhlIHNhbWUgdnN5bmMgY2FsbGJhY2ssIHNldCBuZWVkcyByZWRyYXcgYWdhaW4uCisg
ICAgLy8gVGhpcyBzaG91bGQgbm90IHJlZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBNb3ZlIHRvIGFub3RoZXIgZnJhbWUuIFRoaXMg
c2hvdWxkIG5vdyBkcmF3LgorICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKDIpOworCisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVcpOworfQorCiBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiB7CiAgICAgLy8gV2hlbiBub3Qgb24gdnN5bmMsIG9y
IG9uIHZzeW5jIGJ1dCBub3QgdmlzaWJsZSwgZG9uJ3QgZHJhdy4KQEAgLTExOCwxMCArMTM5LDEw
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdz
T25WU3luYykKICAgICAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAgICAgIHN0
YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7CiAgICAgICAgICAgICBpZiAo
IWopIHsKLSAgICAgICAgICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICAg
ICAgICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYygxKTsKICAgICAgICAgICAgICAgICBzdGF0
ZS5zZXRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRP
dXRzaWRlVlN5bmMoKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxz
ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KICAgICAgICAgICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KGZhbHNlKTsKQEAgLTE1MSw3ICsxNzIsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAgICAgICAgICAg
ICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShh
bGxDb21taXRTdGF0ZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFqKSB7Ci0gICAgICAgICAgICAg
ICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmMoMSk7CiAgICAgICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1
ZSk7CiAgICAgICAgICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKICAgICAgICAgICAg
IH0gZWxzZQpAQCAtMTk4LDcgKzIxOSwxMCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdE5vQ29tbWl0U3RhdGVzUmVkcmF3V2hlbkludmlzaWJsZSkKIAogICAgICAgICAv
LyBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IGRyYXdpbmcgcmVnYXJkbGVzcyBvZiB2c3luYy4KICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IDI7ICsraikgewotICAgICAgICAgICAgc3Rh
dGUuc2V0SW5zaWRlVlN5bmMoaiA9PSAxKTsKKyAgICAgICAgICAgIGlmIChqID09IDEpCisgICAg
ICAgICAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgc3RhdGUuc2V0T3V0c2lkZVZTeW5jKCk7CiAKICAgICAgICAgICAgIC8v
IENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFs
c2UuCiAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CkBAIC0yMzIsMjMg
KzI1NiwyMyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNf
Tm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsK
IAogICAgIC8vIFZlcmlmeSB3ZSBiZWdpbiB1cGRhdGUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3Qg
dnN5bmMuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLnNldE91
dHNpZGVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAg
ICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYygx
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdp
biBhbiB1cGRhdGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogCiAgICAgLy8gVmVyaWZ5
IHdlIGRvbid0IGRvIGFueXRoaW5nLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgotICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKDEpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQg
dXBkYXRlIHdpdGggbm8gbW9yZSB1cGRhdGVzIHBlbmRpbmcuCiAgICAgc3RhdGUuYmVnaW5VcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5j
KGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CiB9CiAKQEAgLTI2MSwyNyArMjg1LDI3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgc3RhdGUu
c2V0VmlzaWJsZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90
aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxz
ZSk7CisgICAgc3RhdGUuc2V0T3V0c2lkZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0
YXRlLnNldEluc2lkZVZTeW5jKDEpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlv
bigpKTsKIAogICAgIC8vIEJlZ2luIGFuIHVwZGF0ZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
Uyk7CiAKICAgICAvLyBWZXJpZnkgd2UgZG8gbm90aGluZywgYm90aCBmb3IgdnN5bmMgYW5kIG5v
dCB2c3luYy4KLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUuc2V0
T3V0c2lkZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
Yyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYygxKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
CiAgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBtb3JlIHBlbmRpbmcuCiAgICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2Ug
dXBkYXRlIG1vcmUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCi0gICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JF
X1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
Yyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYygxKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdpbiBhbm90aGVyIHVwZGF0ZSwgd2hp
bGUgaW5zaWRlIHZzeW5jLiBBbmQsIGl0IHVwZGF0aW5nLgpAQCAtMjkwLDkgKzMxNCw5IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29S
b3VuZHNPZlVwZGF0ZXMpCiAgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUoZmFsc2UpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGNvbW1pdCwgaW5kZXBlbmRlbnQgb2Yg
dnN5bmMuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLnNldE91
dHNpZGVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
Yyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYygxKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CiB9CiAKQEAgLTMwOSw3ICszMzMsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUyk7CiAKICAgICAvLyBFbnN1cmUgd2UgZHJhdyBvbiB0aGUgbmV4dCB2c3lu
YyBldmVuIHRob3VnaCBhbiB1cGRhdGUgaXMgaW4tcHJvZ3Jlc3MuCi0gICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmModHJ1ZSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcpOwogCkBAIC0zMTcsMjUgKzM0MSwyNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gTGVhdmUgdGhlIHZzeW5jIGJlZm9yZSB3ZSBmaW5pc2gg
dGhlIHVwZGF0ZS4KLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUu
c2V0T3V0c2lkZVZTeW5jKCk7CiAKICAgICAvLyBGaW5pc2ggdXBkYXRlIGJ1dCBsZWF2ZSBtb3Jl
IHJlc291cmNlcyBwZW5kaW5nLgogICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgcmVnYXJkbGVzcyBvZiB2c3luYywg
d2UgdXBkYXRlIHNvbWUgbW9yZS4KLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7Cisg
ICAgc3RhdGUuc2V0T3V0c2lkZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLnNl
dEluc2lkZVZTeW5jKDEpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYygyKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdpbiBhbm90aGVyIHVwZGF0ZS4gRmluaXNoIGl0IGlt
bWVkaWF0ZWx5LiBJbnNpZGUgdGhlIHZzeW5jLgogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRy
dWUpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
YyhmYWxzZSk7CisgICAgc3RhdGUuc2V0T3V0c2lkZVZTeW5jKCk7CiAgICAgc3RhdGUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGNv
bW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMo
ZmFsc2UpOworICAgIHN0YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsK
ICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC0z
NjYsNyArMzkyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXRO
ZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwog
CiAgICAgLy8gRXhwZWN0IHRvIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlLgotICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwpAQCAtMzc4LDcgKzQwNCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKIAogICAgIC8v
IFZlcmlmeSB0aGF0IGFub3RoZXIgY29tbWl0IHdpbGwgYmVnaW4uCi0gICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLnNldE91dHNpZGVWU3luYygpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogfQogCkBAIC00MTcsMTAgKzQ0MywxMCBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAg
Ly8gQXQgdnN5bmMsIGRyYXcuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAg
c3RhdGUuc2V0SW5zaWRlVlN5bmMoMSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRh
dGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOwotICAgIHN0YXRl
LnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKIAog
ICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24g
bmVlZGVkLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNDY3LDEwICs0OTMsMTAgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVx
dWVzdEluYmV0d2VlbikKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQXQgdnN5bmMsIGRyYXcu
Ci0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5
bmMoMSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZh
bHNlKTsKKyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKIAogICAgIC8vIFNob3VsZCBiZSBz
eW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24gbmVlZGVkLgogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNv
bW1pdFN0YXRlKCkpOwpAQCAtNTI0LDkgKzU1MCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGUubmVlZHNDb21taXQoKSk7CiAKICAgICAvLyBFeHBlY3QgdG8gZG8gbm90aGluZywgYm90
aCBpbiBhbmQgb3V0IG9mIHZzeW5jLgotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsK
KyAgICBzdGF0ZS5zZXRPdXRzaWRlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRl
LnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKDEpOwogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0LmNwcAppbmRleCBjMWY2ZGMyYzE3NTM1OGY2NTU3MTVjNzhkMTRiMThjZTNj
ZDcwZDgzLi5iYzJhNDYzM2E2YWNlYjBjNjI0ODNjODFkMzQzMGEwNzg4YTJlYWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC0x
MjgsMTIgKzEyOCw1NyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVy
QmVnaW5GcmFtZSkKICAgICBjbGllbnQucmVzZXQoKTsKIH0KIAotVEVTVChDQ1NjaGVkdWxlclRl
c3QsIFJlcXVlc3RSZWRyYXcpCi17Ci19CitjbGFzcyBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVl
ZHNEcmF3SW5zaWRlRHJhdyA6IHB1YmxpYyBDQ1NjaGVkdWxlckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcoKQorICAgICAgICA6
IG1fbnVtRHJhd3MoMCkKKyAgICAgICAgLCBtX3NjaGVkdWxlcigwKSB7IH0KKworICAgIHZvaWQg
c2V0U2NoZWR1bGVyKENDU2NoZWR1bGVyKiBzY2hlZHVsZXIpIHsgbV9zY2hlZHVsZXIgPSBzY2hl
ZHVsZXI7IH0KKworICAgIGludCBudW1EcmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFt
ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCisg
ICAgeworICAgICAgICAvLyBPbmx5IHNldE5lZWRzUmVkcmF3IHRoZSBmaXJzdCB0aW1lIHRoaXMg
aXMgY2FsbGVkCisgICAgICAgIGlmICghbV9udW1EcmF3cykKKyAgICAgICAgICAgIG1fc2NoZWR1
bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgICAgICBtX251bURyYXdzKys7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBpbnQgbV9udW1EcmF3czsKKyAgICBDQ1NjaGVkdWxlciogbV9zY2hlZHVsZXI7Cit9
OwogCi1URVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhd1dpdGhUd29GcmFtZXNQZW5k
aW5nKQorLy8gVGVzdHMgZm9yIHR3byBkaWZmZXJlbnQgc2l0dWF0aW9uczoKKy8vIDEuIHRoZSBz
Y2hlZHVsZXIgZHJvcHBpbmcgc2V0TmVlZHNSZWRyYXcgcmVxdWVzdHMgdGhhdCBoYXBwZW4gaW5z
aWRlCisvLyAgICBhIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwCisvLyAyLiB0aGUgc2NoZWR1
bGVyIGRyYXdpbmcgdHdpY2UgaW5zaWRlIGEgc2luZ2xlIHRpY2sKK1RFU1QoQ0NTY2hlZHVsZXJU
ZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRlRHJhdykKIHsKKyAgICBTY2hlZHVsZXJDbGllbnRUaGF0
U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3Vy
Y2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBP
d25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVu
dCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAg
IGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsKKyAgICBzY2hlZHVsZXItPnNl
dFZpc2libGUodHJ1ZSk7CisKKyAgICBzY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CisgICAg
RVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9FUSgw
LCBjbGllbnQubnVtRHJhd3MoKSk7CisKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQ
RUNUX0VRKDEsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXIt
PnJlZHJhd1BlbmRpbmcoKSk7CisKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNU
X0VRKDIsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5y
ZWRyYXdQZW5kaW5nKCkpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116118</attachid>
            <date>2011-11-21 12:54:27 -0800</date>
            <delta_ts>2011-11-21 15:55:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72688-20111121125426.patch</filename>
            <type>text/plain</type>
            <size>40417</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uMzM5NGNlNzRlZmM5YWU5YzQ3MWVjMTRmMjIwMWY5
YzI0ZjEwOGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE3ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJvdXRlIHdp
bGxEcmF3L3NldE5lZWRzUmVkcmF3IHRvIENDSW5wdXRIYW5kbGVyIGFuZCBmaXggZG91YmxlLWRy
YXdpbmcgaXNzdWVzIHRoYXQgcmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MjY4OAorCisgICAgICAgIFRoaXMgYWxsb3dzIENDSW5wdXRGaWx0
ZXIgYW5kIENDTGF5ZXJUcmVlSG9zdEltcGwgdG8KKyAgICAgICAgcGVyZm9ybSByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUtc3R5bGUgYW5pbWF0aW9ucy4gVGhlIGJ1bGsgb2YKKyAgICAgICAgd29yayBo
ZXJlIGlzIHRvIG1ha2UgdGhlIHNjaGVkdWxlciByZWNvdmVyIGdyYWNlZnVsbHkgd2hlbiB5b3UK
KyAgICAgICAgY2FsbCBzZXROZWVkc1JlZHJhdyBpbnNpZGUgc2NoZWR1bGVkQWN0aW9uRHJhdy4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0
SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJUYXJnZXQ6OkNDSW5w
dXRIYW5kbGVyVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyVGFyZ2V0
Ojp+Q0NJbnB1dEhhbmRsZXJUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0SW1wbDo6Y3VycmVudFRpbWVNcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyOjpDQ1NjaGVkdWxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVk
dWxlcjo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6c2V0TmVl
ZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6bmV4dEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OnNldEluc2lkZVZTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpzZXRPdXRzaWRlVlN5bmMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxDb250cm9sbGVyLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcCk6CisKIDIwMTEtMTEtMjEgIEFuZHJlYXMgS2xpbmcgIDxrbGlu
Z0B3ZWJraXQub3JnPgogCiAgICAgICAgIFN0eWxlU2hlZXQ6IE1vdmUgY29tcGxldGVVUkwoKSB0
byBDU1NTdHlsZVNoZWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2NWYxMjkyMTc0
MWIwYTVhZjM4ZTE1MjVmNjBlMDIyMzNkYTUxYzczLi45YjU0ZTc3MDU4NzlkZTdhZmQzYTZhOWM0
MWNiZTNhYjFiODM2NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDExLTExLTE3ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIFJvdXRlIHdpbGxEcmF3L3NldE5lZWRzUmVkcmF3IHRvIENDSW5wdXRIYW5k
bGVyIGFuZCBmaXggZG91YmxlLWRyYXdpbmcgaXNzdWVzIHRoYXQgcmVzdWx0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjY4OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW1wbDo6V2ViQ29tcG9zaXRvckltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjp3aWxsRHJhdyk6CisgICAgICAgICogc3Jj
L1dlYkNvbXBvc2l0b3JJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBs
OjpjcmVhdGUpOgorICAgICAgICAqIHRlc3RzL0NDRnJhbWVSYXRlQ29udHJvbGxlclRlc3QuY3Bw
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQ6
OmJlZ2luRnJhbWUpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVk
dWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRT
ZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5z
aWRlRHJhdyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5l
ZWRzRHJhd0luc2lkZURyYXc6OnNldFNjaGVkdWxlcik6CisgICAgICAgIChXZWJLaXRUZXN0czo6
U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6Om51bURyYXdzKToKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRl
RHJhdzo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2No
ZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXRO
ZWVkc0RyYXdJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6
OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpzY2hlZHVsZWRB
Y3Rpb25Db21taXQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorCiAyMDExLTExLTIx
ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAgICAgICAgSW1wbGVt
ZW50IGEgc2V0dGVyIGZvciBVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDNkNDU2ZmRlNDRlZWY1OGU1Y2YxYmQzZmMyYTg2OTQ2ZjIxYmJlNTYuLmYzNzliNTk3
ODYxOWUyYzJjZTg4NDczNzA4Y2Q2OWU4OTZlNzlkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1
ODUsNyArMzU4NSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRocmVhZFByb3h5Lmgn
LAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsQ29u
dHJvbGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFu
ZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
bnB1dEhhbmRsZXIuaAppbmRleCBlZmM0MGViNjZkYzY5ZmUyMTVhMzk2N2RmMjM4YTEyNmMzMGQz
ZTcwLi5mYWNiYmU1Y2ZhYmRmZDA4ZTY1OTU5MmNmZjFiY2M0NTNlY2Q3ZDEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSW5wdXRIYW5kbGVyLmgKQEAgLTI5LDE1ICsyOSw0MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENDU2Nyb2xsQ29udHJvbGxlcjsKK2NsYXNzIEludFBvaW50OworY2xhc3Mg
SW50U2l6ZTsKKworLy8gVGhlIENDSW5wdXRIYW5kbGVyIGlzIGEgd2F5IGZvciB0aGUgZW1iZWRk
ZXJzIHRvIGludGVyYWN0IHdpdGgKKy8vIHRoZSBpbXBsIHRocmVhZCBzaWRlIG9mIHRoZSBjb21w
b3NpdG9yIGltcGxlbWVudGF0aW9uLgorLy8KKy8vIFRoZXJlIGlzIG9uZSBDQ0lucHV0SGFuZGxl
ciBmb3IgZXZlcnkgQ0NMYXllclRyZWVIb3N0LiBJdCBpcworLy8gY3JlYXRlZCBhbmQgdXNlZCBv
bmx5IG9uIHRoZSBpbXBsIHRocmVhZC4KKy8vCisvLyBUaGUgQ0NJbnB1dEhhbmRsZXIgaXMgY29u
c3RydWN0ZWQgd2l0aCBhbiBJbnB1dEhhbmRsZXJDbGllbnQsIHdoaWNoIGlzIHRoZQorLy8gaW50
ZXJmYWNlIGJ5IHdoaWNoIHRoZSBoYW5kbGVyIGNhbiBtYW5pcHVsYXRlIHRoZSBMYXllclRyZWUu
CitjbGFzcyBDQ0lucHV0SGFuZGxlckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NJbnB1dEhhbmRsZXJDbGllbnQpOworcHVibGljOgorICAgIHZpcnR1YWwgZG91YmxlIGN1cnJl
bnRUaW1lTXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBp
bmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0IEludFBvaW50JiBhbmNo
b3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCkgPSAwOworCitwcm90
ZWN0ZWQ6CisgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5DQ0lu
cHV0SGFuZGxlckNsaWVudCgpIHsgfQorfTsKIAogY2xhc3MgQ0NJbnB1dEhhbmRsZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENDSW5wdXRIYW5kbGVyKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDQ0lucHV0SGFuZGxlcj4gY3JlYXRlKENDU2Nyb2xsQ29udHJvbGxlciop
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDSW5wdXRIYW5kbGVyPiBjcmVhdGUoQ0NJbnB1dEhh
bmRsZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DQ0lucHV0SGFuZGxlcigpIHsgfQogCiAgICAg
dmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERyYXcoZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcykgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAg
Q0NJbnB1dEhhbmRsZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKaW5kZXggYjNlOTAzMWRhNGE5YWYwODFlMzIzMWZhMTBjZDU0YzJlZGQ5MTYwNi4uNWQ3Nzk0
OTYxYmVlM2FkY2Y1ZDZhNjY4MzU4YTdhZmE1MGUxNDc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTgyLDYgKzgyLDEwIEBAIEdyYXBoaWNzQ29udGV4dDNE
KiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KCkKICAgICByZXR1cm4gbV9sYXllclJlbmRl
cmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCkgOiAwOwogfQogCit2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQoreworfQorCiB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQogewogICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CkBAIC0yODIsNiArMjg2
LDE2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB6CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybSh6b29tKTsKIH0KIAorZG91YmxlIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmN1cnJlbnRUaW1lTXMoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6Om1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnNldE5lZWRzUmVkcmF3KCkKK3sKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdP
bkltcGxUaHJlYWQoKTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxSb290
TGF5ZXIoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
TGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbFJvb3RMYXllciIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGMyOWZlNGUwOTQxMTUyZTQwZTBjNGQyYzJj
ZGVhMjM3YzQ5ZWQ5ZjQuLmNhNGY3MWJkODZhYTMyOTQ1NDVlZjk3YmFkN2JiYTFkZTc5NmI3ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTI1LDkgKzI1LDkgQEAK
ICNpZm5kZWYgQ0NMYXllclRyZWVIb3N0SW1wbF9oCiAjZGVmaW5lIENDTGF5ZXJUcmVlSG9zdElt
cGxfaAogCisjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKLSNp
bmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKICNpZiBVU0UoU0tJQSkKQEAgLTUyLDE5ICs1MiwyNSBAQCBwdWJsaWM6CiB9OwogCiAvLyBD
Q0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUgYXMgd2VsbCBhcyBh
c3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQotY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbCA6IHB1
YmxpYyBDQ1Njcm9sbENvbnRyb2xsZXIgeworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbCA6IHB1
YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NM
YXllclRyZWVIb3N0SW1wbCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0SW1wbCgpOwogCi0gICAg
Ly8gQ0NTY3JvbGxDb250cm9sbGVyIGltcGxlbWVudGF0aW9uCisgICAgLy8gQ0NJbnB1dEhhbmRs
ZXJUYXJnZXQgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZU1z
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJik7CiAgICAgdmlydHVhbCBib29s
IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJl
QmVnaW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0LCBjb25z
dCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVFbmQoKTsKIAogICAg
IC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0ZShkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xh
eWVycygpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKQEAgLTEwNCw5ICsx
MTAsNiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVC
ZWdpbigpOwotICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0
IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwogICAgIFBh
c3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gcHJvY2Vzc1Njcm9sbERlbHRhcygpOwogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggYmMwZWU3OGJjOGE4NGNlODkw
MDE3MmI0N2U3YmU0YTYxMzc0NGQ4ZC4uNTAxYTAwYzJiMDlhMGRmOTBkYzYxZGNhZmNmY2E3ZDdj
NjY3YjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtNTAsMTIgKzUwLDYgQEAgdm9p
ZCBDQ1NjaGVkdWxlcjo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7CiAgICAgbV9zdGF0ZU1h
Y2hpbmUuc2V0VmlzaWJsZSh2aXNpYmxlKTsKIH0KLXZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRz
QW5pbWF0ZSgpCi17Ci0gICAgLy8gU3R1YiB0aHJvdWdoIHRvIHJlcXVlc3RDb21taXQgZm9yIG5v
dy4KLSAgICBzZXROZWVkc0NvbW1pdCgpOwotfQotCiB2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVk
c0NvbW1pdCgpCiB7CiAgICAgbV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNDb21taXQoKTsKQEAgLTEw
Niw5ICsxMDAsOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKCkKICAgICB9CiAgICAg
VFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAKLSAgICBt
X3N0YXRlTWFjaGluZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBtX3N0YXRlTWFjaGluZS5k
aWRFbnRlclZTeW5jKCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKLSAgICBtX3N0
YXRlTWFjaGluZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgbV9zdGF0ZU1hY2hpbmUuZGlk
TGVhdmVWU3luYygpOwogfQogCiB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0
aW9ucygpCkBAIC0xMTcsMTggKzExMSwzMCBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucygpCiAgICAgaWYgKG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oKSA9PSBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIHJlLWVudGVyIGl0c2VsZi4gRm9yIGV4YW1wbGUsIGRy
YXcgbWF5IGNhbGwKKyAgICAvLyBzZXROZWVkc0NvbW1pdC4gUHJvY2VlZWQgd2l0aCBjYXV0aW9u
LgogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gYWN0aW9uOwogICAgIGRvIHsK
ICAgICAgICAgYWN0aW9uID0gbV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlvbigpOworICAgICAgICBt
X3N0YXRlTWFjaGluZS51cGRhdGVTdGF0ZShhY3Rpb24pOworCiAgICAgICAgIHN3aXRjaCAoYWN0
aW9uKSB7CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
OgotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRToKICAgICAgICAgICAg
IG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUzoKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQtPmhhc01vcmVSZXNv
dXJjZVVwZGF0ZXMoKSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVzdCB0b2xk
IHRvIHVwZGF0ZSByZXNvdXJjZXMsIGJ1dCB0aGVyZSBhcmUgbm8KKyAgICAgICAgICAgICAgICAv
LyBtb3JlIHBlbmRpbmcsIHRoZW4gdGVsbCB0aGUgc3RhdGUgbWFjaGluZSB0aGF0IHRoZQorICAg
ICAgICAgICAgICAgIC8vIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQuIElmIG1v
cmUgYXJlIHBlbmRpbmcsCisgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGFjayB0aGUg
dXBkYXRlIGF0IHRoZSBuZXh0IGRyYXcuCisgICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJl
Z2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9DT01NSVQ6CiAgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQ29t
bWl0KCk7CkBAIC0xMzgsMTggKzE0NCw2IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+ZGlkQmVn
aW5GcmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgbV9zdGF0
ZU1hY2hpbmUudXBkYXRlU3RhdGUoYWN0aW9uKTsKLQotICAgICAgICAvLyBJZiB3ZSB3ZXJlIGp1
c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhlcmUgYXJlIG5vIG1vcmUKLSAgICAg
ICAgLy8gcGVuZGluZywgdGhlbiB0ZWxsIHRoZSBzdGF0ZSBtYWNoaW5lIHRoYXQgdGhlCi0gICAg
ICAgIC8vIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQuICBJZiBtb3JlIGFyZSBw
ZW5kaW5nLCB0aGVuIHdlCi0gICAgICAgIC8vIHdpbGwgYWNrIHRoZSB1cGRhdGUgYXQgdGhlIG5l
eHQgZHJhdy4KLSAgICAgICAgaWYgKGFjdGlvbiA9PSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUwotICAgICAgICAgICAgJiYgIW1fY2xp
ZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAgIG1fdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJl
Z2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKLSAgICAgICAgfQotCiAgICAg
fSB3aGlsZSAoYWN0aW9uICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmluZGV4IDBiZTM3MTc2MTgwMWQ3OGIyYzk2YTM0NGVj
MzQ0YzhhMTI3ZjI4NmIuLjk1ZTk5NWY0NTE4ZWQ2N2NmMzRmNGM3ODg4NzRmNjkyMmU3ZTI2ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFZpc2libGUoYm9vbCk7CiAKLSAgICB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpOwogICAg
IHZvaWQgc2V0TmVlZHNDb21taXQoKTsKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA2ZjNkOGI3
MzYyMGVlZDg0ZGVhMTM2ZmIzYWMyMjMzMDFhZjk3N2M3Li5iZGY4ZWRhNTVmMTg4YjNiMTk2N2I3
YzE0ZTZmMGU1ZGU5NThiZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuY3BwCkBAIC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKICAgICA6IG1f
Y29tbWl0U3RhdGUoQ09NTUlUX1NUQVRFX0lETEUpCisgICAgLCBtX2N1cnJlbnRGcmFtZU51bWJl
cigwKQorICAgICwgbV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXNDYWxsZWQoLTEpCiAgICAg
LCBtX25lZWRzUmVkcmF3KGZhbHNlKQogICAgICwgbV9uZWVkc0ZvcmNlZFJlZHJhdyhmYWxzZSkK
ICAgICAsIG1fbmVlZHNDb21taXQoZmFsc2UpCkBAIC0zOSw3ICs0MSw4IEBAIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAKIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBj
b25zdAogewotICAgIGJvb2wgc2hvdWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRl
VlN5bmMgJiYgbV92aXNpYmxlKSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3OworICAgIGJvb2wgY2Fu
RHJhdyA9IG1fY3VycmVudEZyYW1lTnVtYmVyICE9IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3
V2FzQ2FsbGVkOworICAgIGJvb2wgc2hvdWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYmIG1faW5z
aWRlVlN5bmMgJiYgbV92aXNpYmxlICYmIGNhbkRyYXcpIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXc7
CiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURM
RToKICAgICAgICAgaWYgKHNob3VsZERyYXcpCkBAIC0xMDAsNiArMTAzLDggQEAgdm9pZCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAgICBjYXNl
IEFDVElPTl9EUkFXOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7CiAgICAgICAgIG1f
bmVlZHNGb3JjZWRSZWRyYXcgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1faW5zaWRlVlN5bmMpCisg
ICAgICAgICAgICBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZCA9IG1fY3VycmVu
dEZyYW1lTnVtYmVyOwogICAgICAgICBpZiAobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVf
V0FJVElOR19GT1JfRklSU1RfRFJBVykgewogICAgICAgICAgICAgQVNTRVJUKG1fbmVlZHNDb21t
aXQpOwogICAgICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9JRExFOwpAQCAt
MTA4LDkgKzExMywxNSBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0
ZShBY3Rpb24gYWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6c2V0SW5zaWRlVlN5bmMoYm9vbCBpbnNpZGVWU3luYykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OmRpZEVudGVyVlN5bmMoKQogewotICAgIG1faW5zaWRlVlN5bmMgPSBpbnNpZGVW
U3luYzsKKyAgICBtX2luc2lkZVZTeW5jID0gdHJ1ZTsKK30KKwordm9pZCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6ZGlkTGVhdmVWU3luYygpCit7CisgICAgbV9jdXJyZW50RnJhbWVOdW1iZXIr
KzsKKyAgICBtX2luc2lkZVZTeW5jID0gZmFsc2U7CiB9CiAKIHZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggMTllZDIxZGIzMjc3YmUyMTU2MjkzZTA2ZTdiODlm
MzM3MThlMmJjYy4uNWEyN2JkMjhiODhhNzRjYjY5NGVkM2U0NTUxZDQzMzdkZDYxYzUzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC02OCw4ICs2OCwx
MCBAQCBwdWJsaWM6CiAgICAgQWN0aW9uIG5leHRBY3Rpb24oKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZVN0YXRlKEFjdGlvbik7CiAKLSAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc3lzdGVt
IGlzIGluc2lkZSBhIHZzeW5jIGNhbGxiYWNrLgotICAgIHZvaWQgc2V0SW5zaWRlVlN5bmMoYm9v
bCk7CisgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHN5c3RlbSBoYXMgZW50ZXJlZCBhbmQgbGVm
dCBhIHZzeW5jIGNhbGxiYWNrLgorICAgIC8vIFRoZSBzY2hlZHVsZXIgd2lsbCBub3QgZHJhdyBt
b3JlIHRoYW4gb25jZSBpbiBhIGdpdmVuIHZzeW5jIGNhbGxiYWNrLgorICAgIHZvaWQgZGlkRW50
ZXJWU3luYygpOworICAgIHZvaWQgZGlkTGVhdmVWU3luYygpOwogCiAgICAgLy8gSW5kaWNhdGVz
IHdoZXRoZXIgdGhlIExheWVyVHJlZUhvc3RJbXBsIGlzIHZpc2libGUuCiAgICAgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpOwpAQCAtOTksNiArMTAxLDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IENvbW1pdFN0YXRlIG1fY29tbWl0U3RhdGU7CiAKKyAgICBpbnQgbV9jdXJyZW50RnJhbWVOdW1i
ZXI7CisgICAgaW50IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkOwogICAgIGJv
b2wgbV9uZWVkc1JlZHJhdzsKICAgICBib29sIG1fbmVlZHNGb3JjZWRSZWRyYXc7CiAgICAgYm9v
bCBtX25lZWRzQ29tbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbENvbnRyb2xsZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0MWQyNDNhODA1YTJkMGRmYzI0MDQzZTc5NjgyZWMw
MGY4ZWNkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbENvbnRy
b2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgQ0NTY3JvbGxDb250cm9sbGVyX2gKLSNkZWZpbmUgQ0NTY3JvbGxDb250cm9sbGVyX2gK
LQotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEludFNpemU7Ci0KLWNsYXNzIENDU2Nyb2xsQ29udHJvbGxlciB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ0NTY3JvbGxDb250cm9sbGVyKTsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUmKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBpbmNo
R2VzdHVyZUJlZ2luKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUo
ZmxvYXQgbWFnbmlmeURlbHRhLCBjb25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIENDU2Ny
b2xsQ29udHJvbGxlcigpIHsgfQotICAgIHZpcnR1YWwgfkNDU2Nyb2xsQ29udHJvbGxlcigpIHsg
fQotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKaW5kZXggZGRjMDFjMTQwOWI4YzkxMjlkMWNmYTM5MjdjNDQxMzhkZmU1ZWM1NS4uNzJiZWMy
YTcxNjY0YWY0M2NkNjRkMDE0ZDI4Yjg0MjY1MDk1YjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCi0jaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogCkBAIC0yODQsNiArMjgzLDggQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bXBvc2l0ZSgpCiAKICAgICB7CiAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsK
KyAgICAgIGRvdWJsZSBmcmFtZURpc3BsYXlUaW1lTXMgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSAqIDEwMDAuMDsKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUoZnJh
bWVEaXNwbGF5VGltZU1zKTsKICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOTVjNmI1ZGE1Mzkz
YzQ4YzljOTQwZGI1ZDQwNTA1ZDUxNjJjYzA3OS4uOGU3NzQyNWU0NDBhNGVkY2YyOWYyNjVhYzNl
OWVlZmRiZTIxNWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM0LDcgKzM0
LDYgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1Nj
aGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRl
ICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC00NjQsNiArNDYzLDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXAoKQogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IGNvbXB1dGUgdGhlIGZyYW1lIGRpc3BsYXkgdGlt
ZSBtb3JlIGludGVsbGlnZW50bHkKKyAgICBkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zID0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7CisKKyAgICBtX2lucHV0SGFuZGxl
ck9uSW1wbFRocmVhZC0+d2lsbERyYXcoZnJhbWVEaXNwbGF5VGltZU1zKTsKKyAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRpbWVNcyk7CiAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBj
b21wb3NpdGVBbmRSZWFkYmFjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbXBsLmNwcAppbmRleCA4MWRlZTJmMWIyNWE4NzViNmRlMThhMjU5ZTcyYTU4
MGFjN2QwYTkzLi44MTUyODFjNzM0ZDMwY2FjZTUwMmNkZTY2Y2I1Yjc0YjYwZTlmN2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
Q29tcG9zaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKLSNpbmNsdWRl
ICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oPgogCkBAIC0zOCw5ICszOCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IEND
SW5wdXRIYW5kbGVyOjpjcmVhdGUoQ0NTY3JvbGxDb250cm9sbGVyKiBzY3JvbGxDb250cm9sbGVy
KQorUGFzc093blB0cjxDQ0lucHV0SGFuZGxlcj4gQ0NJbnB1dEhhbmRsZXI6OmNyZWF0ZShDQ0lu
cHV0SGFuZGxlckNsaWVudCogaW5wdXRIYW5kbGVyQ2xpZW50KQogewotICAgIHJldHVybiBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JJbXBsOjpjcmVhdGUoc2Nyb2xsQ29udHJvbGxlcik7CisgICAgcmV0
dXJuIFdlYktpdDo6V2ViQ29tcG9zaXRvckltcGw6OmNyZWF0ZShpbnB1dEhhbmRsZXJDbGllbnQp
OwogfQogCiB9CkBAIC03OCwxMCArNzgsMTAgQEAgV2ViQ29tcG9zaXRvciogV2ViQ29tcG9zaXRv
ckltcGw6OmZyb21JZGVudGlmaWVyKGludCBpZGVudGlmaWVyKQogICAgIHJldHVybiAwOwogfQog
Ci1XZWJDb21wb3NpdG9ySW1wbDo6V2ViQ29tcG9zaXRvckltcGwoQ0NTY3JvbGxDb250cm9sbGVy
KiBzY3JvbGxDb250cm9sbGVyKQorV2ViQ29tcG9zaXRvckltcGw6OldlYkNvbXBvc2l0b3JJbXBs
KENDSW5wdXRIYW5kbGVyQ2xpZW50KiBpbnB1dEhhbmRsZXJDbGllbnQpCiAgICAgOiBtX2NsaWVu
dCgwKQogICAgICwgbV9pZGVudGlmaWVyKHNfbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIrKykKLSAg
ICAsIG1fc2Nyb2xsQ29udHJvbGxlcihzY3JvbGxDb250cm9sbGVyKQorICAgICwgbV9pbnB1dEhh
bmRsZXJDbGllbnQoaW5wdXRIYW5kbGVyQ2xpZW50KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c0ltcGxUaHJlYWQoKSk7CiAKQEAgLTExNyw5ICsxMTcsOSBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJ
bXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAot
ICAgIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwgJiYgIW1fc2Ny
b2xsQ29udHJvbGxlci0+aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKSB7CisgICAgaWYgKGV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1dEhhbmRsZXJDbGll
bnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgewogICAgICAgICBjb25zdCBXZWJNb3VzZVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VXaGVlbEV2
ZW50Kj4oJmV2ZW50KTsKLSAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLT5zY3JvbGxSb290TGF5
ZXIoSW50U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgsIC13aGVlbEV2ZW50LmRlbHRhWSkpOworICAg
ICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsUm9vdExheWVyKEludFNpemUoLXdoZWVs
RXZlbnQuZGVsdGFYLCAtd2hlZWxFdmVudC5kZWx0YVkpKTsKICAgICAgICAgbV9jbGllbnQtPmRp
ZEhhbmRsZUlucHV0RXZlbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMiw0ICsx
MzIsOCBAQCBpbnQgV2ViQ29tcG9zaXRvckltcGw6OmlkZW50aWZpZXIoKSBjb25zdAogICAgIHJl
dHVybiBtX2lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgV2ViQ29tcG9zaXRvckltcGw6OndpbGxEcmF3
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKK3sKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmgKaW5kZXggZjRlNGUyMWQ5NDE1OTZlYmQyYzg0
MWQxYWYxMmEzZmI5NmUyMjVjOC4uYmRlMDk2ODljOTQ1ZTk3Yjg0NmNiZTU2ODk3ZTA5NzE4MzVk
YmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1w
bC5oCkBAIC0zNywxMCArMzcsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE11dGV4OwogfQog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDQ1Njcm9sbENvbnRyb2xsZXI7Ci19Ci0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb21wb3NpdG9yQ2xpZW50OwpAQCAtNTAsOSAr
NDYsOSBAQCBjbGFzcyBXZWJDb21wb3NpdG9ySW1wbCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yLCBw
dWJsaWMgV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJD
b21wb3NpdG9yKiBmcm9tSWRlbnRpZmllcihpbnQgaWRlbnRpZmllcik7CiAKLSAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJDb21wb3NpdG9ySW1wbD4gY3JlYXRlKFdlYkNvcmU6OkNDU2Nyb2xsQ29u
dHJvbGxlciogc2Nyb2xsQ29udHJvbGxlcikKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21w
b3NpdG9ySW1wbD4gY3JlYXRlKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50KiBjbGllbnQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JJbXBsKHNj
cm9sbENvbnRyb2xsZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3Np
dG9ySW1wbChjbGllbnQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9ySW1w
bCgpOwpAQCAtNjMsMTMgKzU5LDE0IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyIGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgZnJhbWVCZWdpblRpbWUpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkNvbXBvc2l0b3JJbXBsKFdlYkNvcmU6OkNDU2Ny
b2xsQ29udHJvbGxlciopOworICAgIGV4cGxpY2l0IFdlYkNvbXBvc2l0b3JJbXBsKFdlYkNvcmU6
OkNDSW5wdXRIYW5kbGVyQ2xpZW50Kik7CiAKICAgICBXZWJDb21wb3NpdG9yQ2xpZW50KiBtX2Ns
aWVudDsKICAgICBpbnQgbV9pZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OkNDU2Nyb2xsQ29udHJv
bGxlciogbV9zY3JvbGxDb250cm9sbGVyOworICAgIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xp
ZW50KiBtX2lucHV0SGFuZGxlckNsaWVudDsKIAogICAgIHN0YXRpYyBpbnQgc19uZXh0QXZhaWxh
YmxlSWRlbnRpZmllcjsKICAgICBzdGF0aWMgSGFzaFNldDxXZWJDb21wb3NpdG9ySW1wbCo+KiBz
X2NvbXBvc2l0b3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4IDYyNmFhNDU3NjkxNjc5
MjFmOTJjMGVlY2Y1NTcxZGViYTk0ZDZhMTguLjgxM2QwYzAzODMxNzMzYTAyZjFiYjllYjAyMTRj
ZmNiOTA3MTgwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTc2LDkgKzc2LDkgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJh
bWVJZk5lZWRlZCkKICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmco
ZmFsc2UpOwogICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogCi0gICAgICAgIHN0YXRl
LnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwog
ICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsK
KyAgICAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAg
IH0KIApAQCAtMTA5LDYgKzEwOSwyOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFNldEZvcmNlZFJlZHJhd0RvZXNOb3RTZXRzTm9ybWFsUmVkcmF3KQogICAgIEVYUEVD
VF9GQUxTRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOwogfQogCitURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdERvZXN0RHJhd1R3aWNlSW5TYW1lRnJhbWUpCit7CisgICAgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsK
KyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVyk7CisKKyAgICAvLyBXaGlsZSBzdGlsbCBpbiB0aGUgc2FtZSB2
c3luYyBjYWxsYmFjaywgc2V0IG5lZWRzIHJlZHJhdyBhZ2Fpbi4KKyAgICAvLyBUaGlzIHNob3Vs
ZCBub3QgcmVkcmF3LgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKworICAgIC8vIE1vdmUgdG8gYW5vdGhlciBmcmFtZS4gVGhpcyBzaG91bGQgbm93IGRyYXcu
CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsK
KworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKK30KKwogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogewogICAgIC8vIFdoZW4gbm90IG9u
IHZzeW5jLCBvciBvbiB2c3luYyBidXQgbm90IHZpc2libGUsIGRvbid0IGRyYXcuCkBAIC0xMTgs
MTAgKzE0MCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFj
dGlvbkRyYXdzT25WU3luYykKICAgICAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAg
ICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7CiAgICAgICAg
ICAgICBpZiAoIWopIHsKLSAgICAgICAgICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVl
KTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgICAgICAgICAg
ICAgc3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc9ZmFsc2UuCiAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7
CkBAIC0xNTEsNyArMTcyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogICAgICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRl
OwogICAgICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsK
ICAgICAgICAgICAgIGlmICghaikgewotICAgICAgICAgICAgICAgIHN0YXRlLnNldEluc2lkZVZT
eW5jKHRydWUpOworICAgICAgICAgICAgICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICAg
ICAgICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAgICAgICAgICAgICAgICBz
dGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0xOTgsNyArMjE5
LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb0NvbW1pdFN0YXRl
c1JlZHJhd1doZW5JbnZpc2libGUpCiAKICAgICAgICAgLy8gVGhlcmUgc2hvdWxkbid0IGJlIGFu
eSBkcmF3aW5nIHJlZ2FyZGxlc3Mgb2YgdnN5bmMuCiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCAyOyArK2opIHsKLSAgICAgICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGogPT0g
MSk7CisgICAgICAgICAgICBpZiAoaiA9PSAxKQorICAgICAgICAgICAgICAgIHN0YXRlLmRpZEVu
dGVyVlN5bmMoKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KICAgICAgICAgICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KGZhbHNlKTsKQEAgLTIzMiwyMyArMjU0LDIyIEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykK
ICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVw
ZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KLSAgICBzdGF0ZS5zZXRJbnNpZGVW
U3luYyhmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdpbiBh
biB1cGRhdGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogCiAgICAgLy8gVmVyaWZ5IHdl
IGRvbid0IGRvIGFueXRoaW5nLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgotICAgIHN0
YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBzdGF0
ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEVuZCB1cGRhdGUg
d2l0aCBubyBtb3JlIHVwZGF0ZXMgcGVuZGluZy4KICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7Ci0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2Up
OworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKQEAg
LTI2MSwzOCArMjgyLDM2IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0VmlzaWJs
ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90aCBmb3IgdnN5
bmMgYW5kIG5vdCB2c3luYy4KLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAg
c3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlv
bigpKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBzdGF0ZS5kaWRMZWF2
ZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAg
Ly8gQmVnaW4gYW4gdXBkYXRlLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKIAogICAgIC8v
IFZlcmlmeSB3ZSBkbyBub3RoaW5nLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgotICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRl
LnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogCiAgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBtb3JlIHBlbmRpbmcuCiAg
ICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CiAKICAgICAv
LyBWZXJpZnkgd2UgdXBkYXRlIG1vcmUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCi0g
ICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBk
YXRlLCB3aGlsZSBpbnNpZGUgdnN5bmMuIEFuZCwgaXQgdXBkYXRpbmcuCi0gICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmModHJ1ZSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogICAgIHN0YXRl
LmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIE1ha2Ug
c3VyZSB3ZSBjb21taXQsIGluZGVwZW5kZW50IG9mIHZzeW5jLgotICAgIHN0YXRlLnNldEluc2lk
ZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLmRpZEVudGVy
VlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9D
T01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKQEAgLTMwOSw3ICszMjgsNyBAQCBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVS
b3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAKICAgICAvLyBFbnN1
cmUgd2UgZHJhdyBvbiB0aGUgbmV4dCB2c3luYyBldmVuIHRob3VnaCBhbiB1cGRhdGUgaXMgaW4t
cHJvZ3Jlc3MuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgc3RhdGUuZGlk
RW50ZXJWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKIApAQCAtMzE3LDI3ICszMzYsMjkg
QEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRy
YXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIExlYXZlIHRo
ZSB2c3luYyBiZWZvcmUgd2UgZmluaXNoIHRoZSB1cGRhdGUuCi0gICAgc3RhdGUuc2V0SW5zaWRl
VlN5bmMoZmFsc2UpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIEZpbmlz
aCB1cGRhdGUgYnV0IGxlYXZlIG1vcmUgcmVzb3VyY2VzIHBlbmRpbmcuCiAgICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhh
dCByZWdhcmRsZXNzIG9mIHZzeW5jLCB3ZSB1cGRhdGUgc29tZSBtb3JlLgotICAgIHN0YXRlLnNl
dEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBk
YXRlLiBGaW5pc2ggaXQgaW1tZWRpYXRlbHkuIEluc2lkZSB0aGUgdnN5bmMuCi0gICAgc3RhdGUu
c2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7Cisg
ICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291
cmNlc0NvbXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBjb21taXQgcmVnYXJkbGVz
cyBvZiB2c3luYyBzdGF0ZQotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnNldElu
c2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiB9CiAKQEAgLTM2Niw5ICszODcsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CiAKICAgICAvLyBFeHBlY3QgdG8gY29tbWl0IHJlZ2FyZGxlc3Mgb2Yg
dnN5bmMgc3RhdGUuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRl
LmRpZExlYXZlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuc2V0SW5zaWRl
VlN5bmModHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIAogICAgIC8vIENvbW1pdCBhbmQgbWFrZSBzdXJlIHdlIGRyYXcgb24gbmV4dCB2c3luYwpA
QCAtMzc4LDcgKzM5OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IGFub3Ro
ZXIgY29tbWl0IHdpbGwgYmVnaW4uCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwor
ICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIApA
QCAtNDE3LDEwICs0MzgsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RGdWxsQ3ljbGUpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEF0IHZzeW5jLCBkcmF3Lgot
ICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7Ci0gICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2Up
OworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJv
bml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24gbmVlZGVkLgogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOwpAQCAtNDY3LDEwICs0ODgsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gQXQgdnN5bmMsIGRyYXcuCi0gICAgc3RhdGUuc2V0SW5zaWRlVlN5
bmModHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
KTsKLSAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CisgICAgc3RhdGUuZGlkTGVhdmVW
U3luYygpOwogCiAgICAgLy8gU2hvdWxkIGJlIHN5bmNocm9uaXplZCwgbm8gZHJhdyBuZWVkZWQs
IG5vIGFjdGlvbiBuZWVkZWQuCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfSURMRSwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBAIC01MjQsOSArNTQ1
LDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxl
TWlkQ29tbWl0KQogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKIAogICAg
IC8vIEV4cGVjdCB0byBkbyBub3RoaW5nLCBib3RoIGluIGFuZCBvdXQgb2YgdnN5bmMuCi0gICAg
c3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIHN0
YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggYzFmNmRjMmMx
NzUzNThmNjU1NzE1Yzc4ZDE0YjE4Y2UzY2Q3MGQ4My4uYjU4ZWQyYzU2YzI4ZGY3ODVjYzljMTE2
OWQ2NzAxY2M3MGRmZmJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1NjaGVkdWxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJUZXN0LmNwcApAQCAtMTI4LDEyICsxMjgsMTA5IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0ZXJCZWdpbkZyYW1lKQogICAgIGNsaWVudC5yZXNldCgp
OwogfQogCi1URVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhdykKK2NsYXNzIFNjaGVk
dWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3IDogcHVibGljIENDU2NoZWR1bGVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5z
aWRlRHJhdygpCisgICAgICAgIDogbV9udW1EcmF3cygwKQorICAgICAgICAsIG1fc2NoZWR1bGVy
KDApIHsgfQorCisgICAgdm9pZCBzZXRTY2hlZHVsZXIoQ0NTY2hlZHVsZXIqIHNjaGVkdWxlcikg
eyBtX3NjaGVkdWxlciA9IHNjaGVkdWxlcjsgfQorCisgICAgaW50IG51bURyYXdzKCkgY29uc3Qg
eyByZXR1cm4gbV9udW1EcmF3czsgfQorCisgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwKCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgc2V0TmVlZHNSZWRyYXcg
dGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBjYWxsZWQKKyAgICAgICAgaWYgKCFtX251bURyYXdzKQor
ICAgICAgICAgICAgbV9zY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CisgICAgICAgIG1fbnVt
RHJhd3MrKzsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21t
aXQoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIGludCBtX251bURyYXdzOworICAgIENDU2NoZWR1
bGVyKiBtX3NjaGVkdWxlcjsKK307CisKKy8vIFRlc3RzIGZvciB0d28gZGlmZmVyZW50IHNpdHVh
dGlvbnM6CisvLyAxLiB0aGUgc2NoZWR1bGVyIGRyb3BwaW5nIHNldE5lZWRzUmVkcmF3IHJlcXVl
c3RzIHRoYXQgaGFwcGVuIGluc2lkZQorLy8gICAgYSBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cAorLy8gMi4gdGhlIHNjaGVkdWxlciBkcmF3aW5nIHR3aWNlIGluc2lkZSBhIHNpbmdsZSB0aWNr
CitURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhd0luc2lkZURyYXcpCiB7CisgICAg
U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcgY2xpZW50OworICAgIFJl
ZlB0cjxGYWtlQ0NUaW1lU291cmNlPiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZha2VDQ1Rp
bWVTb3VyY2UoKSk7CisgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVk
dWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIo
dGltZVNvdXJjZSkpKTsKKyAgICBjbGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7
CisgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgc2NoZWR1bGVyLT5zZXRO
ZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgdGltZVNvdXJj
ZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQ
RUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworCisgICAgdGltZVNvdXJjZS0+
dGljaygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKIH0KIAotVEVTVChDQ1NjaGVkdWxl
clRlc3QsIFJlcXVlc3RSZWRyYXdXaXRoVHdvRnJhbWVzUGVuZGluZykKK2NsYXNzIFNjaGVkdWxl
ckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXcgOiBwdWJsaWMgQ0NTY2hlZHVsZXJD
bGllbnQgeworcHVibGljOgorICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdElu
c2lkZURyYXcoKQorICAgICAgICA6IG1fbnVtRHJhd3MoMCkKKyAgICAgICAgLCBtX3NjaGVkdWxl
cigwKSB7IH0KKworICAgIHZvaWQgc2V0U2NoZWR1bGVyKENDU2NoZWR1bGVyKiBzY2hlZHVsZXIp
IHsgbV9zY2hlZHVsZXIgPSBzY2hlZHVsZXI7IH0KKworICAgIGludCBudW1EcmF3cygpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3Vy
Y2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcCgpCisgICAgeworICAgICAgICAvLyBPbmx5IHNldE5lZWRzQ29tbWl0
IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVkCisgICAgICAgIGlmICghbV9udW1EcmF3cykK
KyAgICAgICAgICAgIG1fc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICBtX251
bURyYXdzKys7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29t
bWl0KCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBpbnQgbV9udW1EcmF3czsKKyAgICBDQ1NjaGVk
dWxlciogbV9zY2hlZHVsZXI7Cit9OworCisvLyBUZXN0cyBmb3IgdGhlIHNjaGVkdWxlciBpbmZp
bml0ZS1sb29waW5nIG9uIHNldE5lZWRzQ29tbWl0IHJlcXVlc3RzIHRoYXQKKy8vIGhhcHBlbiBp
bnNpZGUgYSBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcAorVEVTVChDQ1NjaGVkdWxlclRlc3Qs
IFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogeworICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXRO
ZWVkc0NvbW1pdEluc2lkZURyYXcgY2xpZW50OworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNl
PiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgT3du
UHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQs
IGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsKKyAgICBj
bGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7CisgICAgc2NoZWR1bGVyLT5zZXRW
aXNpYmxlKHRydWUpOworCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVY
UEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
Y2xpZW50Lm51bURyYXdzKCkpOworCisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVD
VF9FUSgxLCBjbGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5j
b21taXRQZW5kaW5nKCkpOworICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisK
KyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3
cygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOwogfQog
CiB9Cg==
</data>
<flag name="review"
          id="115202"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>